如何在 Ruby 中动态命名哈希键
How to Dynamically name a Hash key in Ruby
我正在尝试在一个 erb 文件中进行 'render' 调用,其中散列的键是动态命名的。例如...
<% object_type_abbr = ["pos", "job_description", "policy", "procedure", "step", "task", "product"] %>
<%= render path.to_s,
model_id: @model.id,
object_type_abbr[i]: orphan,
row_no: row_no,
is_orphan: true
%>
问题是无法识别此语法。我试过使用#{ruby var name} 语法(建议here),当然这在HTML 中不起作用。
我也试过object_type_abbr[i].to_sym,没什么区别。
我知道这一定存在,但找不到。
一种解决方案是对散列中的条目使用 =>
表示法,例如
model_id: @model.id
object_type_abbr[i].to_sym => orphan,
....
将键映射到散列中的值的标准方法是使用 key => value
(火箭)表示法。
当你写 model_id: @model.id
时,这是 shorthand for :model_id => @model.id
- Ruby 提供了这个 shorthand 因为在键是符号的地方创建散列是这样的常见用例。但是将这种语法风格用于类似 object_type_abbr[i]:
的东西是无效的,其中冒号左边的东西不是符号的名称。
当您使用 =>
表示法时,键可以是任何表达式,包括计算结果为符号的表达式。
我正在尝试在一个 erb 文件中进行 'render' 调用,其中散列的键是动态命名的。例如...
<% object_type_abbr = ["pos", "job_description", "policy", "procedure", "step", "task", "product"] %>
<%= render path.to_s,
model_id: @model.id,
object_type_abbr[i]: orphan,
row_no: row_no,
is_orphan: true
%>
问题是无法识别此语法。我试过使用#{ruby var name} 语法(建议here),当然这在HTML 中不起作用。
我也试过object_type_abbr[i].to_sym,没什么区别。
我知道这一定存在,但找不到。
一种解决方案是对散列中的条目使用 =>
表示法,例如
model_id: @model.id
object_type_abbr[i].to_sym => orphan,
....
将键映射到散列中的值的标准方法是使用 key => value
(火箭)表示法。
当你写 model_id: @model.id
时,这是 shorthand for :model_id => @model.id
- Ruby 提供了这个 shorthand 因为在键是符号的地方创建散列是这样的常见用例。但是将这种语法风格用于类似 object_type_abbr[i]:
的东西是无效的,其中冒号左边的东西不是符号的名称。
当您使用 =>
表示法时,键可以是任何表达式,包括计算结果为符号的表达式。