我有一点有趣的困境。我有一个:ingredients
字段,我用它来获取一个成分的用户输入。每种成分都属于一个配方,即form_for
(:ingredients
是field_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
吗?
但是我仍然被困住了,如果可能的话我想避免使用Gems(我知道这种愚蠢的约束)。
答案 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| %>