2012-03-18 166 views
3

我使用下面的格式在Rails 3.2中创建了一个表单,但是当我打开发布视图时,我没有看到允许我发表评论的表单。什么可能是错的?创建表单(Ruby on Rails)

<%= form_tag(:controller => "posts", :action => "create") do %> 
    <%= label_tag(:message, "What are you doing?") %><br /> 
    <%= text_area_tag(:message, nil, :size => "44x6") %><br /> 
    <%= submit_tag("Update") %> 
<% end %> 

回答

4

在Rails 3 form_ *助手返回的标记,而不是直接将其输出。变化:

<% form_tag(:controller => "posts", :action => "create") do %> 

到:

<%= form_tag(:controller => "posts", :action => "create") do %> 
+0

你是完全正确的 – 2012-03-18 23:23:44

+0

但我可以使用类似'<%= form_remote_tag(:controller =>“posts”,:action =>“create”)do%>,这会引发错误 – 2012-03-19 00:01:24

+1

'form_remote_tag'在rails3中删除。相反,你可以通过':remote => true'到form_tag:'<%= form_tag {:controller =>“posts”,:action =>“create”},:remote => true做%>' – pjumble 2012-03-19 00:47:44

0

检查您的路线文件,并确保它是正确的。并且在你的第一行做一个=登录。认为可以工作。但是,当你有资源的形式,推荐使用的form_for:

<% form_for @posts.each do |p| %> 
<%= p.label :message %><br /> 
<%= p.text_area :message, nil, :size => "44x6" %><br /> 
<%= submit_tag("Update") %> 
<% end %> 

此外,避免< BR />。使用CSS(divs,classes等)设置你的表单样式。当然,你将不得不作出@posts变种在你的控制器为此工作:

@posts = Post.all 

希望这有助于

+0

错误我用你的例子得到的是'未定义的方法'MODEL_NAME”的枚举:行Class' 1 – 2012-03-18 23:16:26

+0

也许添加等号这样<%=的form_for @ posts.each do | p | %> – oFca 2012-03-18 23:17:58