Rails:循环遍历数组以创建输出

时间:2011-04-24 08:06:40

标签: ruby-on-rails arrays loops dynamic

我有一个模型“管”,它是一个拥有各种真空管数据的数据库。我想动态遍历所有列并为我的“新”和“编辑”页面创建一个基本表。 我抓住这样的属性名称:

  

<%attr_array = @ tube.attribute_names%>

我想做这样的事情:

  

<%attr_array.each {| x | text_field:x}%>

希望动态生成:

  

<%= form_for @tube do | f | %GT;       <%= f.label:name,:class =>'std_label'%>:
      <%= f.text_field:name,:class =>'std_input'%>

      <%= f.label:functional_class,:class =>'std_label'%>:
      <%= f.text_field:functional_class,:class =>'std_input'%>

      <%= f.label:base_type,:class =>'std_label'%>:
      <%= f.text_field:base_type,:class =>'std_input'%>

       ......等等....       <%= f.submit%> <%end%>

但当然这不起作用,不是远远不够。如何根据attribute_names数组动态生成text_field输入?我使用的表有大约30个属性,我认为手工构建它们是愚蠢的,特别是考虑到如果它们将来发生变化,那么代码就会破坏。谷歌搜索和阅读API已经给了我关于为什么这不起作用的讲座,但让我嗨和干我的代码示例。

准确的帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

怎么样:

<%= form_for @tube do |f| %>
  <% @tube.attribute_names.each do |attr| %>
    <%= f.text_field attr, :class=>'std_input' %>
    <%= f.label attr, :class=>'std_label' %>:
  <% end %>
<%= f.submit %>
<% end %>