我有一个食谱模型,其中嵌入了成分,使用Mongoid.
class Recipe include Mongoid::Document include Mongoid::Timestamps field :title,:type => String embeds_many :ingredients accepts_nested_attributes_for :ingredients,:reject_if => lambda { |a| a[:title].blank? },:allow_destroy => true validates :title,:presence => true end class Ingredient include Mongoid::Document field :name,:type => String field :quantity,:type => String embedded_in :recipe,:inverse_of => :ingredients end
我希望能够同时创建一个新配方,以及该食谱的相关成分,但我很难理解我将如何做到这一点.这是我到目前为止:
_form.html.erb – 在配方视图中使用
<%= form_for @recipe do |f| %> ... <li>Title: <%= f.text_field :title %></li> <% f.fields_for :ingredients do |builder| %> <%= render "ingredient_fields",:f => builder %> <% end %> ... <%= f.submit %>
_ingredient_fields.html.erb
<%= f.text_field :name %>
配方控制器
def new @recipe = Recipe.new @ingredient = @recipe.ingredients.build end def create @recipe = Recipe.new(params[:recipe]) if @recipe.save redirect_to @recipe,notice: 'Recipe was successfully created.' else render action: "new" end end
成分控制器
def new @recipe = Recipe.find(params[:recipe_id]) @ingredient = @recipe.ingredients.build end def create @recipe = Recipe.find(params[:recipe_id]) @ingredient = @recipe.ingredients.build(params[:ingredient]) # if @recipe.save end
这使得新成分形成,但成分没有领域.谁能给我任何关于我做错的指示?