Ruby-on-Rails将变量转换为link_to数组参数

时间:2013-09-16 17:19:05

标签: ruby-on-rails ruby-on-rails-4 link-to

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

2 个答案:

答案 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数组..