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