Rails: цикл по массиву для создания вывода - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть модель "трубка", которая представляет собой базу данных с различными данными для вакуумных трубок.Я хочу динамически перебрать все столбцы и создать базовую таблицу для моих «новых» и «редактируемых» страниц.Я получаю имена атрибутов, например:

<% attr_array = @ tube.attribute_names%>

И я хочу сделать что-то вроде этого:*

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

в надежде динамически сгенерировать это:

<% = form_for @tube do | f |%> <% = f.label: name,: class => 'std_label'%>:<% = f.text_field: name,: class => 'std_input'%><% = f.label: functions_class,: class => 'std_label'%>:<% = f.text_field: functions_class,: class => 'std_input'%><% = f.label: base_type,: class => 'std_label'%>:<% = f.text_field: base_type,: class => 'std_input'%>.... и т. д. .... <% = f.submit%> <% end%>

Но, конечно, это не сработает.Как я могу генерировать свои входные данные text_field динамически на основе массива attribute_names?Таблица, которую я использую, имеет около 30 атрибутов, и я думаю, что глупо создавать их все вручную, особенно если учесть, что если они изменятся в будущем, код сломается.Поиск в Google и чтение API дали мне лекции о том, почему это не работает, но оставили меня в здравом уме и пример кода того, что делает.

Точная помощь приветствуется.

1 Ответ

2 голосов
/ 24 апреля 2011

А как же:

<%= 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 %>
...