使用Rails表单提交类的多个实例

时间:2012-02-26 19:14:42

标签: ruby-on-rails forms object model

我有一点有趣的困境。我有一个:ingredients字段,我用它来获取一个成分的用户输入。每种成分都属于一个配方,即form_for:ingredientsfield_for)。但是,用户应该能够输入多种成分,无限量。现在我已经实现了添加1种成分的功能,如下所示:

<%= form_for(:recipe, :url => {:action => 'create'}) do |f| %>

    <%= fields_for :ingredient do |i| %>
         <%= i.text_field(:quantity, :size => '6', :maxlength => '6') %>
         <%= i.text_field(:units, :size => '20', :maxlength => '20') %> 
    <% end %>

<% end %>

为了简化事情,我将要讨论无限制的要求,稍后我会用AJAX做,并假设用户最多只放20个。我对如何设计{{1}感到困惑。这样做,并访问我的控制器中的这20个元素中的每一个。它会是form_for吗?

我读到了这个问题: How can I create multiple instances of an assosiated model from a rails 3 form_for when I don't know how many I'm going to add?

但是我仍然被困住了,如果可能的话我想避免使用Gems(我知道这种愚蠢的约束)。

1 个答案:

答案 0 :(得分:1)

查看nested_form gem,以便添加multiple ingredients。还看看

class Recipe < ActiveRecord::Base
  accepts_nested_attributes_for :ingredients
end

里面的配方控制器新动作..

def new
    @recipe = Recipe.new
    @recipe = @recipe.ingredients.build
end

内部视图

<%= nested_form_for(@recipe, :url => {:action => 'create'}) do |f| %>