【发布时间】:2013-01-21 04:37:43
【问题描述】:
我正在使用带有 form_tag、checkbox_tag 和 submit_tag 的 RoR 3 向我的控制器提交一组 id。
我有一个消息表,我希望有一个复选框,允许我选择这些提交的项目并对其执行操作。在我看来:
<%= form_tag :name => "mailgrid",:id=>"submit",:action => "inbox_action" do %>
...
<td class="mailbox_from"><%= check_box_tag 'msg_ids[]', message.id %></td>
...
<%= submit_tag "delete", :name => 'commit', :value=>'delete' %>
<% end %>
这会生成如下所示的 HTML:
<form accept-charset="UTF-8" action="/messages/inbox_action/submit?name=mailgrid" method="post">
...
<input id="msg_ids_" name="msg_ids[]" style="position:relative;top:-2px;right:10px;" type="checkbox" value="88" />
...
<input name="commit" type="submit" value="delete" /> </div>
然后,在我的控制器中:
if params[:msg_ids]
#dostuff
end
但是,这些复选框是否被选中永远不会传递给我的控制器。在我的日志中,这些参数完全丢失了,即使这个控制器方法确实被调用了。这是日志:
于 2013-02-05 19:43:02 -0800 为 127.0.0.1 开始 POST "/messages/inbox_action/submit?name=mailgrid"
MessagesController#inbox_action 作为 HTML 处理
参数:{"utf8"=>"✓", "authenticity_token"=>"asdf", "commit"=>"delete", "name"=>"mailgrid", "id"=>"submit" }
关于我做错了什么有什么想法吗?
【问题讨论】:
-
您的表单是否以
<% end %>结尾? -
guides.rubyonrails.org/form_helpers.html 我认为您应该为模型 CRUD 使用“form_for”
-
这与模型动作无关,所以我想使用 form_tag,因为它更通用。是的,我以
<% end %>结束表格。我会更新帖子。
标签: html ruby-on-rails ruby-on-rails-3 forms