我正在尝试在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,这没什么区别。
我知道这必须存在,但找不到它。
答案 0 :(得分:5)
一种解决方案是在散列中对该条目使用=>
表示法,例如
model_id: @model.id
object_type_abbr[i].to_sym => orphan,
....
将键映射到散列值的标准方法是使用key => value
(火箭)表示法。
当您编写model_id: @model.id
时,这是:model_id => @model.id
的简写 - Ruby提供了这种简写,因为创建密钥是符号的哈希是一种常见的用例。但是对于像object_type_abbr[i]:
这样的东西使用这种语法是无效的,冒号左边的东西不是符号的名称。
使用=>
表示法时,键可以是任何表达式,包括计算符号的表达式。