如何在erb模板中呈现数组数组的最佳方法?

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

Sub*_*ial 5

转而使用哈希.

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)中所述,重复的密钥将不起作用.与另一个字段具有相同标签的字段并不好.

  • 我喜欢这个!您只需要提一下它不适用于重复标签(哈希键).在这种情况下,这似乎不是一个问题. (2认同)