Ruby on rails 选中rubyonrails中的passarray复选框
如何传递数组的值?选中复选框的名称 鉴于:Ruby on rails 选中rubyonrails中的passarray复选框,ruby-on-rails,ruby,controller,Ruby On Rails,Ruby,Controller,如何传递数组的值?选中复选框的名称 鉴于: = 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?", :met
= 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 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做任何事情
供参考:
更新(一个小问题)
从这里开始:
我们的更新方法仍然存在一个小问题如果取消选中所有复选框以从所有类别中删除产品,则更新将失败,无法删除该产品所属的任何类别。这是因为如果未选中HTML表单上的复选框,则不会将其值发回,因此产品的参数哈希中不会出现类别ID
,这意味着类别ID
不会更新
要解决此问题,我们必须修改产品控制器,将类别ID
参数设置为空数组(如果未传递给更新操作)。我们可以使用Ruby的| |=
操作符来实现这一点,并在更新操作的顶部添加以下类似的内容
params[:product][:category_id]| |=[]
这将确保如果未选中任何复选框,则产品将正确更新,因此不属于任何类别
但我需要把按钮放在物体的顶部,它不起作用。。。还有什么建议吗?嗯,我想这可能对我有帮助。GodBlesssuggestions for Select and unselect all checkbox?我在这里看到一个问题,如果选择了none
check_box
,更新将不会修改实体,因为数组参数将不会被发送。
<% 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 %>