tom*_*nek 3 ruby ruby-on-rails erb object sinatra
我有一个阵列 [["Company Name", "Field6"], ["Email", "Field5"]]
从该数组我创建具有值的字段数组:
[
[{:label=>"Company Name", :value=>"gfdgfd"}],
[{:label=>"Email", :value=>"gfdgfd@gfd.pl"}]
]
Run Code Online (Sandbox Code Playgroud)
运用
fields = [["Company Name", "Field6"], ["Email", "Field5"]]
# first element in array is Label and second is param id
fields_with_values = fields.collect do |field|
[
label: field[0],
value: params[field[1]]
]
end
Run Code Online (Sandbox Code Playgroud)
然后我想将标签和值传递给erb模板(类似):
# template.erb
<% fields_with_values.each do |field| %>
l: <%= field.label %>
v: <%= field.value %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如何收集这些fields_with_values的最佳方式?也许我应该使用Object.new
转而使用哈希.
fields = [["Company Name", "Field6"], ["Email", "Field5"]]
fields_with_values = Hash[*fields.flatten]
# => {"Company Name"=>"Field6", "Email"=>"Field5"}
Run Code Online (Sandbox Code Playgroud)
在您的视图中,解析哈希:
<% fields_with_values.each do |label, value| %>
l: <%= label %>
v: <%= params[value.intern] %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的输入数组不均匀,这将会中断.一个没有价值的钥匙.
如下面的评论(+1)中所述,重复的密钥将不起作用.与另一个字段具有相同标签的字段并不好.