gpt4 book ai didi

ruby-on-rails - Rails : has_many through association, 和用于创建新实例的表单

转载 作者:行者123 更新时间:2023-12-03 15:48:42 25 4
gpt4 key购买 nike

我仍然是 Rails 的新手,只是想通过关联设置来获得我的第一个 has_many。

食谱有很多成分,每种成分都有食谱所需的量。配料数量表具有配方标识、配料标识和数量。

创建新配方时,我希望能够在同一位置创建这些配方/成分关联。最后,我将为这些成分构建一个 AJAX 自动完成器。现在,作为一个小步骤,我只想假设该成分存在,并在我放下这部分后进行检查。

那么,我怎样才能为食谱制作 new.html.erb 呢?如何为一种以上的成分扩展表格?

现在的情况,经过http://weblog.rubyonrails.org/2009/1/26/nested-model-forms
我仍然无法获得任何字段来添加成分。当前代码如下。

class Recipe < ActiveRecord::Base
has_many :ingredient_amounts
has_many :ingredients, :through => :ingredient_amounts
accepts_nested_attributes_for :ingredient_amounts, :allow_destroy => true
end

class IngredientAmount < ActiveRecord::Base
belongs_to :ingredient
belongs_to :recipe
end

class Ingredient < ActiveRecord::Base
has_many :ingredient_amounts
has_many :recipes :through => :ingredient_amounts
end

这是我目前拥有的 new.html.erb :
   <h1>New recipe</h1>

<% form_for @recipe do |f| %>
<%= f.error_messages %>

<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :instructions %><br />
<%= f.text_area :instructions %>
</p>
<p>
<%= f.label :numberOfServings %><br />
<%= f.text_field :numberOfServings %>
</p>
<p>
<%= f.label :prepTime %><br />
<%= f.text_field :prepTime %>
</p>

<p>
<% f.fields_for :ingredient_amounts do |ingredient_form| %>
<%= ingredient_form.label :ingredient_formedient_id, 'Ingredient' %>
<%= ingredient_form.collection_select :ingredient_id, Ingredient.all, :id, :name, :prompt => "Select an Ingredient"%>
<%= ingredient_form.text_field :amount %>
<% unless ingredient_form.object.new_record? %>
<%= ingredient_form.label :_delete, 'Remove:' %>
<%= ingredient_form.check_box :_delete %>

<% end %>
</p>
<% end %>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>

<%= link_to 'Back', recipes_path %>

配方 Controller 的重要部分:
def new
@recipe = Recipe.new

respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @recipe }
end
end
def create
@recipe = Recipe.new(params[:recipe])

respond_to do |format|
if @recipe.save
flash[:notice] = 'Recipe was successfully created.'
format.html { redirect_to(@recipe) }
format.xml { render :xml => @recipe, :status => :created, :location => @recipe }
else
format.html { render :action => "new" }
format.xml { render :xml => @recipe.errors, :status => :unprocessable_entity }
end
end
end

而且...我不知道从哪里开始在成分数量 Controller 中。
这是我第一次刺伤,我很确定它不会那么接近:)
def new
@recipe = Recipe.find(params[:recipe_id])
@ingredient = Ingredient.find(params[:ingredient_id])
@ingredient_amount = Recipe.ingredient_amounts.build
end

谢谢您的帮助!

最佳答案

我相信您正在寻找的是“嵌套模型表单”。

试试这个链接:http://weblog.rubyonrails.org/2009/1/26/nested-model-forms

当您一开始并不真正了解术语时,很难知道要搜索什么:)

关于ruby-on-rails - Rails : has_many through association, 和用于创建新实例的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com