我正在使用带有 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"}
关于我做错了什么有什么想法吗?