ruby-on-rails - 访问正确的数组值

标签 ruby-on-rails ruby arrays

以下数组 ["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/

相关文章:

ruby-on-rails - Heroku 不加载预编译的 Assets

ruby-on-rails - 如何按 ruby​​ 中的多个属性对数组进行排序?

ruby-on-rails - 带有数组和 ul、li 标签的 content_tag - 映射与每个

ruby-on-rails - 路由错误 - 在 rails 中使用 activerecord-reputation-system gem 时没有路由匹配 [GET] 错误

javascript - JavaScript 中对象字典的内存使用

java - 如何通过改造发送带有键值对的数组数组

mysql - 在 Rails 应用程序中向 mysql 表添加一列?

ruby-on-rails - Rails 未找到异常通知程序插件

iOS 检查表格 View 行中是否包含字符串?

javascript - Summernote 仅在刷新时才有效