Ruby on rails 控制器#创建将不保存,@product.save将不起作用

Ruby 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),

基本问题,我正在尝试将产品保存到类别。我有我的控制器#创建和表单如下-问题是我的类别#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), 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很高兴它很有用!