基本的轨道在ajax与设计crud

时间:2016-10-12 20:33:39

标签: ruby-on-rails ajax devise

我在rails和ajax中有一个基本的CRUD,但我需要集成Devise gem,在为我的项目添加devise gem并测试CRUD时,我收到此错误:

Controller error view

code inspector error in browser

rails 4.2中的控制器代码:

class ProductsController < ApplicationController

  before_action :authenticate_user!
  before_action :product_find, only: [:show, :update, :destroy, :edit]

  def index
    @products = Product.all.order('created_at DESC')
  end

  def show

  end

  def new
    @product = Product.new

    respond_to do |format|
      format.html { render layout: false }
      format.json { render json: @product }
      format.js
    end

  end

  def create
    @product = current_user.products.build(product_params)
    respond_to do |format|
      if @product.save
        format.json { render :show, status: :created, location: @product}
        format.js
      else
        format.html { render :new }
        format.json { render json: @product.errors, status: :unprocessable_entity }
        format.js
      end
    end
  end

  def edit

  end

  def update
    @product = Product.update(params[:id], product_params)
  end

  def destroy
    @product.destroy
  end

  private

    def product_find
      @product = Product.where(id: params[:id]).first
    end

    def product_params
      params.require(:product).permit(:name, :quantity, :price)
    end
end

用户可以毫无问题地连接,当我使用注册用户

创建新产品时会发生错误

我做错了什么?

我认为错误可能出现在CREATE和NEW方法

感谢!

1 个答案:

答案 0 :(得分:1)

您是否为模型正确设置了关联?错误undefined method 'products' for <User>表示您没有。

# user.rb
has_many :products

# product.rb
belongs_to :user

确保产品型号上还有user_id字段。