创建一个表单(Ruby on Rails)

3

我在Rails 3.2中使用以下格式创建了一个表单,但当我打开文章视图时,我没有看到评论表单。可能出了什么问题?

<%= 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 %>
2个回答

4
在Rails 3中,form_*助手程序返回标记,而不是直接输出它。请更改为:
<% form_tag(:controller => "posts", :action => "create") do %>

致:

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

但是我能使用像 <%= form_remote_tag(:controller => "posts", :action => "create") do %> 这样的东西吗?这会引发一个错误。 - El nino
1
form_remote_tag在Rails 3中已被移除。相反,您可以在form_tag中传递:remote => true<%= form_tag {:controller => "posts", :action => "create"}, :remote => true do %> - pjumble

1

检查您的路由文件并确保其正确。在第一行中使用等号。我认为这可能有效。但是,如果您有一个资源表单,建议使用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

希望这能有所帮助


我使用你的示例代码出现了错误,错误信息为undefined method 'model_name' for Enumerator:Class,位于第1行。 - El nino
也许可以像这样添加等号:<%= form_for @posts.each do |p| %> - oFca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接