我有一个动作edit_multiple
,其中包含一个id的列表:
def edit_multiple
@products = Product.find(params[:product_ids])
end
和routes.rb:
resources: products do
collection do
post :edit_multiple
end
end
以及视图中products
变量中的一组产品,我希望将其作为参数传递给link_to
中的路径:
<%= link_to edit_multiple_products_path(:product_ids => products), :method => :post do %>
update products
<% end %>
当我点击链接时出现错误:
Couldn't find Product with id=#<ActiveRecord::Relation::ActiveRecord_Relation_Product:0x495c900>
请注意我使用的是Rails 4
答案 0 :(得分:2)
如果产品ID以数组形式使用where
,而不是find
:
@products = Product.where("id in (?)", params[:product_ids])
答案 1 :(得分:1)
您还可以从以下位置更改视图:
<%= link_to edit_multiple_products_path(:product_ids => products), :method => :post do %>
update products
<% end %>
为:
<%= link_to edit_multiple_products_path(:product_ids => products.map(&:id)), :method => :post do %>
update products
<% end %>
您将获得一个产品ID数组..