0

我有一个动作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

4

2 回答 2

2

如果产品 ID 作为数组使用where,则不是find

@products = Product.where("id in (?)", params[:product_ids])
于 2013-09-16T17:25:39.067 回答
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数组..

于 2013-09-16T17:27:56.647 回答