Rails 循环遍历表单字段中的数据

Jak*_*ake 5 forms for-loop ruby-on-rails ruby-on-rails-3

我想在表单中遍历数据库中的数据。我想对数据做的是把它放在标签和文本框中。我怎么能在 Rails 中做到这一点?我会使用 .each 块在表单内循环遍历它吗?我在我的数据库中有它的原因是因为我的客户希望能够自己添加表单字段数据。


例如,这是我想做的事情:

<%= form_for :order do |f| %>
  @fields.each do |field|
    <%= f.label field.name %>
    <%= f.text_field field.name %>
  <% end %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

完成这样的事情的最佳方法是什么?

请不要用 railscast 回答:)

提前致谢

Tar*_*ast 3

是的,这会起作用,尽管您在第二行错过了结束脚本标记:

<%= form_for :order do |f| %>
   <% @fields.each do |field| %>  
       <%= f.label field.name %>
       <%= f.text_field field.name %>
   <% end %>
   <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如果您需要比标签/文本字段对更复杂的东西 - 那么您可以使用部分模板并使用 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 %>
Run Code Online (Sandbox Code Playgroud)

<!-- in '_field.html.erb' -->
<%= f.label field.name %>
<%= f.text_field field.name %>
<!-- and whatever else you want to do... -->
Run Code Online (Sandbox Code Playgroud)

有关部分渲染的更多信息:http://api.rubyonrails.org/classes/ActionView/Partials.html