繁体   English   中英

在rails上的ruby中选择复选框传递数组

[英]Select checkbox pass array in ruby on rails

我怎样才能传递数组的值? 选中的复选框。

在视图中:

= check_box_tag 'user_message_ids[]', user_message.id, false

= link_to "<button>Bulk Delete</button>".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 %>
  <table>
    <thead>
      <tr>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <% @items.each do |item| %>
      <tr>
        <td><%= check_box_tag "items[]", item.id %></td>
      </tr>
      <% end %>
    </tbody>
  </table>
  <%= 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传递给更新操作,则将category_ids参数设置为空数组。 我们可以使用Ruby's ||=运算符执行此操作,并在更新操作的顶部添加以下内容。

params[:product][:category_ids] ||= []

这将确保如果未选中任何复选框,则产品将正确更新,以使其不属于任何类别。

您需要在表单标记周围添加按钮标记。 您无法使用link_to提交输入标记数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM