Ruby on rails 控制器#创建将不保存,@product.save将不起作用
基本问题,我正在尝试将产品保存到类别。我有我的控制器#创建和表单如下-问题是我的类别#id没有保存,我不知道为什么 产品\u控制器.rbRuby on rails 控制器#创建将不保存,@product.save将不起作用,ruby-on-rails,ruby,Ruby On Rails,Ruby,基本问题,我正在尝试将产品保存到类别。我有我的控制器#创建和表单如下-问题是我的类别#id没有保存,我不知道为什么 产品\u控制器.rb def create @product = Product.new(product_params) respond_to do |format| if @product.save format.html { redirect_to category_products_path(@product.category),
def create
@product = Product.new(product_params)
respond_to do |format|
if @product.save
format.html { redirect_to category_products_path(@product.category), notice: 'Product was successfully created.' }
format.json { render :show, status: :created, location: @product }
else
format.html { render :new }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
_form.html.erb
<%= form_for @product, url: category_products_path(@product) do |form| %>
<div class="field">
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
看起来您需要显式地分配类别
def create
@product = Product.new(product_params)
@category = Category.find(params[:category_id])
@product.category = @category
...
end
看起来您需要显式地分配类别
def create
@product = Product.new(product_params)
@category = Category.find(params[:category_id])
@product.category = @category
...
end
您需要首先从参数中设置类别
@category = Category.find(params[:category_id])
完成后,您可以将产品与类别相关联(假设类别有多个产品)
另一种方法是(更类似于您的方法):- 然后从参数中附加
类别id
,如下所示:-
@product.category_id = params[:category_id]
然后保存产品。您需要先从参数中设置类别
@category = Category.find(params[:category_id])
完成后,您可以将产品与类别相关联(假设类别有多个产品)
另一种方法是(更类似于您的方法):- 然后从参数中附加
类别id
,如下所示:-
@product.category_id = params[:category_id]
然后保存产品。(1)您应该显示更多控制台输出。那里应该有更多的信息。(2) 试试
。保存代码>,这可能会引发一些错误和更多信息。谢谢jvillian!我想这是因为:category_id='1'不包含在参数中,但我不明白为什么。我正在使用product_params,所以不明白为什么不包括它。。。。?我想我的url:in _form.html.erb为了将您的产品保存到类别中,它必须声明为嵌套形式。类别id必须在参数中的正确位置。(1) 您应该显示更多的控制台输出。那里应该有更多的信息。(2) 试试。保存代码>,这可能会引发一些错误和更多信息。谢谢jvillian!我想这是因为:category_id='1'不包含在参数中,但我不明白为什么。我正在使用product_params,所以不明白为什么不包括它。。。。?我想我的url:in _form.html.erb为了将您的产品保存到类别中,它必须声明为嵌套形式。类别id必须在参数中的正确位置。非常感谢。我想我必须先@product.create,但没有做研究-谢谢你的回答,这节省了我的时间。在谷歌上搜索这些东西真是一举一动……:-)@Belvin很高兴它很有用!非常感谢。我想我必须先@product.create,但没有做研究-谢谢你的回答,这节省了我的时间。在谷歌上搜索这些东西真是一举一动……:-)@Belvin很高兴它很有用!