controller#create将不保存,@ product.save将不起作用

时间:2018-08-02 03:24:03

标签: ruby-on-rails ruby

基本问题,我正在尝试将产品保存到类别。我在下面有我的controller#create和form-问题是我的category_id没有保存,我也不知道为什么...

products_controller.rb

CollectionChanged

_form.html.erb

IList

我也相应地设置了模型,迁移,模式都正确设置了。有人知道为什么吗?

这也是控制台输出:

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

2 个答案:

答案 0 :(得分:1)

您似乎需要明确分配类别...

def create
  @product = Product.new(product_params)
  @category = Category.find(params[:category_id])
  @product.category = @category
  ...
end

答案 1 :(得分:1)

您需要首先从参数中设置类别。

@product = @category.products.create(product_params)

完成后,您可以将产品与类别相关联(假设类别有has_many个产品)

@product = Product.new(product_params)

另一种方法是(更类似于您的方法):-

category_id

然后从这样的参数中附加@product.category_id = params[:category_id] :-

feelings= [
              {
                "node": {
                  "checkinElement": "Angry",
                  "checkinElementId": "3157"
                }
              },
              {
                "node": {
                  "checkinElement": "Scared",
                  "checkinElementId": "3158"
                }
              },
              {
                "node": {
                  "checkinElement": "Sad",
                  "checkinElementId": "3159"
                }
              }
                          ]

然后保存产品。