Rails表单 - 迭代表单中的集合

时间:2012-12-31 19:04:10

标签: ruby-on-rails ruby-on-rails-3

在我的表单中,我想迭代一个特定的集合并收集有关每个集合的相同信息。为简单起见,例如:

<%= form_tag :update_dog do %>
    <% @dogs.each do |dog| %>
        <%= text_field_tag :name, :class=>dog.id %>
    <% end %>
    <%= submit_tag "Add", :class => 'btn btn-success'%>
<%= end %>

我希望收集每只狗的名字以便在控制器中进行操作(我希望能够在每个提交的狗名称上进行迭代并访问其ID)。我收集的狗的潜在数量是可变的。做这个的最好方式是什么?上面的代码是我到目前为止,但我不知道它是否正确,如果是这样,如何在控制器中使用它。

非常感谢!

1 个答案:

答案 0 :(得分:1)

我从一个过滤器开始。创建一个创建你的狗的before_filter

class KennelController < ApplicationController
  before_filter  :get_dogs , :only=>[:new,:edit]
  def get_dogs
     @dogs = Dog.all.map{|d| [d.name, d.id]}
  end
  ....
end

然后在新视图或编辑视图中,您可以执行以下操作:

<%= select_tag :dog, options_for_select(@dogs) %>