2016-10-12 9 views
0

でAJAXでCRUDレール:基本的には私はレールとAJAXでの基本的なCRUDを持っていますが、私が考案宝石を統合する必要があり、私のプロジェクトに宝石を考案し、CRUDをテスト追加するとき、私はこのエラーを取得する工夫

Controller error view

レール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 

ユーザが問題なく接続することができ、エラーoccu登録ユーザーとの新しい製品を作成するときは

何が間違っているのですか?

私はエラーが作成し、新しい方法で

感謝かもしれないと思います!

+0

エラーが発生したときにユーザーがログインしたことを確認してください。 – Ren

+0

ユーザーは問題なく接続できます。登録済みのユーザーで新しい製品を作成するとエラーが発生します。 –

+0

は、エラーが発生したときに 'current_user'以外ではありませんか? –

答えて

1

モデルに関連付けを正しく設定しましたか?エラーundefined method 'products' for <User>は、あなたが持っていないことを示唆しています。

# user.rb 
has_many :products 

# product.rb 
belongs_to :user 

また、製品モデルにuser_idフィールドがあることを確認してください。

+0

正確に!、noob間違い、新しいメソッドでcurrent_user.products.buildを追加し、作成メソッドでcurrent_user.products.build(product_params)を追加します。 ありがとう –

関連する問題