在rails上的ruby中选择复选框传递数组
我怎样才能传递数组的值? 选中的复选框。
在视图中:
= check_box_tag 'user_message_ids[]', user_message.id, false = link_to "".html_safe, profile_message_path(user_message), :id => 'user_message_ids', :confirm => "Are you sure?", :method => :delete
我可以将提交按钮放在任何一个区域。
像这个:
= form_tag checked_messages_path do = check_box_tag 'user_message_ids[]', user_message.id, false --------objects--------------------------------------------- --------objects--------------------------------------------- --------objects--------------------------------------------- --------objects--------------------------------------------- = submit_tag "Delete Checked"
使用form_tag
块
<% form_tag delete_mutiple_items_path do %> <% @items.each do |item| %> <%= check_box_tag "items[]", item.id %> <% end %>
<%= submit_tag "delete Checked" %> <% end %>
它会将一组id传递给控制器,如{“item_ids []”=> [“1”,“2”,“3”]}
所以你可以用这些ID做任何事情
仅供参考: http: //railscasts.com/episodes/165-edit-multiple?view = ascicast
更新(One Small Gotcha)
从这里: http : //railscasts.com/episodes/17-habtm-checkboxes?view = ascicast
我们的更新方法还有一个小问题。 如果我们取消选中所有复选框以从所有类别中删除产品,则更新无法删除产品所在的任何类别。这是因为如果取消选中HTML表单上的复选框,则不会将其值发回,因此不会
category_ids
将出现在产品的参数哈希中,这意味着category_ids
不会更新。要解决此问题, 我们必须修改我们的产品控制器,以便将
category_ids
参数设置为空数组(如果它未传递给更新操作)。 我们可以使用Ruby's ||=
运算符执行此操作,并在更新操作的顶部添加以下内容。
params[:product][:category_ids] ||= []
这将确保如果未选中任何复选框,则产品将正确更新,以使其不属于任何类别。
您需要在表单标记周围添加按钮标记。 您无法使用link_to
提交输入标记数据。
- 使用WEBrick为PHP Web应用程序提供服务
- 使用唯一字段返回postgresql查询中的前X个记录
- RoR2.8和Heroku:我安装了一个插件,在本地工作,现在heroku根本不起作用
- 在Ruby中使用Marshal :: dump进行对象序列化时如何写入文件
- 使用Koala(Ruby)收集用户的新闻源
- Ruby正则表达式密钥搜索
- 如何使用Net :: HTTP :: Post将XML发布到RESTFUL Web服务?
- Gem Rmagick安装错误:extconf.rb:171:在“’:没有这样的文件或目录 – convert -version(Errno :: ENOE NT)
- 如何配置ruby以在Ctrl-C(SIGINT)上进入调试器?