Rails перебирает данные в поле формы

Я хотел бы просмотреть данные в моей базе данных внутри формы. То, что я хотел бы сделать с данными, это поместить их в метки и текстовые поля. Как я мог сделать это в рельсах? Могу ли я просто использовать блок.each, чтобы пройти через него внутри формы? Причина, по которой я это сделал в своей базе данных, заключается в том, что мой клиент хотел бы иметь возможность добавлять данные поля формы самостоятельно.


Например, вот что я хотел бы сделать:

<%= form_for :order do |f| %>
  @fields.each do |field|
    <%= f.label field.name %>
    <%= f.text_field field.name %>
  <% end %>
  <%= f.submit %>
<% end %>

Какой лучший способ сделать что-то подобное?

Пожалуйста, не отвечайте с Railscast:)

заранее спасибо

1 ответ

Да, это будет работать, хотя вы пропустили конечный тег сценария во второй строке:

<%= form_for :order do |f| %>
   <% @fields.each do |field| %>  
       <%= f.label field.name %>
       <%= f.text_field field.name %>
   <% end %>
   <%= f.submit %>
<% end %>

Если вам нужно что-то более сложное, чем просто пара метка / текстовое поле - тогда вы можете использовать частичный шаблон и ключевое слово collection:

<!-- in 'order.html.erb' -->
<%= form_for :order do |f| %>
   <!-- note: each 'field' is auto-populated from the collection/partial-name, but you need to pass the form in as a local -->
   <%= render :partial => 'field', :collection => @fields, :locals => {:f => f} %>  
   <%= f.submit %>
<% end %>

а также

<!-- in '_field.html.erb' -->
<%= f.label field.name %>
<%= f.text_field field.name %>
<!-- and whatever else you want to do... -->

Подробнее о частичном рендеринге здесь: http://api.rubyonrails.org/classes/ActionView/Partials.html

Другие вопросы по тегам