2010-07-22 52 views
2

什么是正确的方式来使用窗体标记,我收到编译错误,当我包括结束。当我把它拿出来的时候,我应该手动使用HTML来结束表单吗?或者我的语法有什么问题?RoR:结束form_tag编译错误

<html> 
    <head> 
     <title> 
     Databse connections 
     </title> 
    </head> 
    <body> 
     <%= form_tag (:action => 'create')%> 
     <%= text_field(:album, :title) %> 
     <%= text_field(:album, :artist) %> 
     <%= text_field(:album, :genre) %> 
     <%= datetime_select(:album, :release_date) %> 
     <%= submit_tag("Create") %> 
     <% end %> 

    </body> 
    </html> 

回答

3

如果您在没有块的情况下使用form_tag,它只会创建开始标记。如果你想创建两个标签,你需要传递给它一个块,你似乎是试图做的,但你缺少的do关键字后form_tag(...)

<% form_tag (:action => 'create') do %> 
    <%= text_field(:album, :title) %> 
    <%= text_field(:album, :artist) %> 
    <%= text_field(:album, :genre) %> 
    <%= datetime_select(:album, :release_date) %> 
    <%= submit_tag("Create") %> 
<% end %> 

没有do开始块时, end是一个语法错误。如果没有使用当前语法中的end,则没有指定字段位于表单内(但它们最终会成为表单的一部分,因为在指定之前,您没有关闭由无数据块form_tag创建的表单标记他们)。

+0

此外,他正在使用'<%= form_tag'而不是'<%form_tag' – 2010-07-22 22:38:34

+0

@Ryan Yah,我没有回答这个问题,因为这里曾经有第二个答案提到它,但我想它是删除。 – 2010-07-23 04:10:30