2016-10-12 4 views
0

ich eine grundlegende CRUD in Schienen und Ajax habe, aber ich brauche Devise Juwel zu integrieren, wenn gem mein Projekt hinzugefügt entwickeln und die CRUD testen, bekomme ich diesen Fehler:Grundschienen crud in Ajax mit devise

Controller error view

der Code-Controller in den Schienen 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 

der Benutzer problemlos verbinden kann, der Fehler occu rs wenn ich ein neues Produkt mit dem registrierten Benutzer erstellen

was mache ich falsch?

Ich denke, der Fehler in der Methode CREATE und NEW sein kann

danken!

+0

Sind Sie sicher, dass Ihr Benutzer angemeldet war, als der Fehler aufgetreten ist? – Ren

+0

der Benutzer kann ohne Probleme eine Verbindung herstellen, der Fehler tritt auf, wenn ich ein neues Produkt mit dem registrierten Benutzer erstellen –

+0

ist 'current_user' nicht null, wenn Sie den Fehler erhalten? –

Antwort

1

Haben Sie die Verknüpfungen für Ihre Modelle korrekt eingerichtet? Der Fehler undefined method 'products' for <User> schlägt vor, dass Sie nicht haben.

# user.rb 
has_many :products 

# product.rb 
belongs_to :user 

Vergewissern Sie sich, auch ein user_id Feld auf dem Produktmodell.

+0

Exactly!, Noob Fehler, ich füge current_user.products.build in neue Methode und current_user.products.build (product_params) in erstellen Methode Vielen Dank für Ihre Hilfe –