Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby on Rails将变量转换为链接_到数组参数_Ruby On Rails_Ruby On Rails 4_Link To - Fatal编程技术网

Ruby on rails Ruby on Rails将变量转换为链接_到数组参数

Ruby on rails Ruby on Rails将变量转换为链接_到数组参数,ruby-on-rails,ruby-on-rails-4,link-to,Ruby On Rails,Ruby On Rails 4,Link To,我有一个动作edit\u multiple,它获取一个id列表,例如: def edit_multiple @products = Product.find(params[:product_ids]) end 和a.rb: resources: products do collection do post :edit_multiple end end 以及视图中products变量中的产品集合,我希望将其作为参数传递给link\u to中的路径,类似于: <%= l

我有一个动作
edit\u multiple
,它获取一个id列表,例如:

def edit_multiple
  @products = Product.find(params[:product_ids])
end
和a.rb:

resources: products do
  collection do
    post :edit_multiple
  end
end
以及视图中
products
变量中的产品集合,我希望将其作为参数传递给
link\u to
中的路径,类似于:

<%= link_to edit_multiple_products_path(:product_ids => products), :method => :post do %>
  update products
<% end %>
产品),:方法=>:post do%>
更新产品
当我单击链接时,我得到错误信息:

Couldn't find Product with id=#<ActiveRecord::Relation::ActiveRecord_Relation_Product:0x495c900>
找不到id为的产品=#

请注意,如果产品ID以数组形式出现,我使用的是Rails 4,请使用
where
,而不是
find

@products = Product.where("id in (?)", params[:product_ids])

如果产品ID以数组形式出现,请使用
where
,而不是
find

@products = Product.where("id in (?)", params[:product_ids])

您还可以从以下位置更改视图:

<%= link_to edit_multiple_products_path(:product_ids => products), :method => :post do %>
  update products
<% end %>
产品),:方法=>:post do%>
更新产品
致:

products.map(&:id)),:method=>:post do%>
更新产品

您将获得产品ID阵列。

您还可以从以下位置更改视图:

<%= link_to edit_multiple_products_path(:product_ids => products), :method => :post do %>
  update products
<% end %>
产品),:方法=>:post do%>
更新产品
致:

products.map(&:id)),:method=>:post do%>
更新产品

您将得到一个产品id数组。

使用产品。其中(“id in=?”,参数[:Product_id])使用产品。其中(“id in=?”,参数[:Product_id])
find
希望接收单个id作为参数,然后返回单个产品。使用
where
将允许您发送多个id并接收多个产品。
find
希望接收单个id作为参数,然后返回单个产品。使用
where
将允许您发送多个ID并接收多个产品。