以下数组 ["2", "8", "134", "137", "140"]
是通过用户输入生成的。 Controller 操作调用数组如下:
params[:product_ids].each do |product_id|
@product = Product.where('id = ?', product_id).first
end
不幸的是在调用 View 中的值时(出于开发控制目的)
<% params[:product_ids].each do |t| %>
<%= t %> <%= @product.id %><br />
<% end %>
正在为 t
呈现正确的值,但随后将其与 140
相关联五次。
2 140
8 140
134 140
137 140
140 140
因此访问数组的最后一项并忽略键。当在 Controller 中尝试这样做时:
params[:product_ids].each do |k, product_id|
它正在返回 Called id for nil,这会被错误地设为 4——如果您真的想要 nil 的 id,请使用 object_id
如何定义 Controller 以适本地访问参数的值?
最佳答案
您将循环中的值分配给同一个变量,将其放在循环之外,并使用 #map
获取值作为所有产品 ID 的事务模型,因此:
@transactions = params[:product_ids].map do |product_id|
[ Transaction.where(product_id: product_id).first ]
end
然后:
<%= @transactions %>
关于ruby-on-rails - 访问正确的数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562810/