2016-10-09 5 views
0

Ich implementiere eine Website mit Ruby on Rails. Ich habe ein Problem, dass ich keine neuen Daten erstellen und in meinem Modell speichern kann. Der Fehler, den ich bekam, ist der, auf den der Fehler auf @vpermits = current_user.vpermits.build (vpermit_params) zeigte. Hat jemand eine Idee zu dem, was ich falsch gemacht habe?Kann keine Datenschienen erstellen, kein Methodenfehler

NoMethodError in VisitorPermitsController#create 
undefined method `vpermits' for #<User:0x9b7b478> 


    def create 
     @vpermits = current_user.vpermits.build(vpermit_params) 
     if @vpermits.save 
      redirect_to @vpermits 
     else 

Das ist mein visitor_permits_controller.rb

class VisitorPermitsController < ApplicationController 
    before_action :set_vpermit, only: [:destroy] 
    def index 
     @vpermits = VisitorPermit.where(:user_id => current_user.id) 
    end 

    def new 
     @vpermits = VisitorPermit.new 
    end 

    def create 
     @vpermits = current_user.vpermits.build(vpermit_params) 
     if @vpermits.save 
      redirect_to @vpermits 
     else 
      render 'new' 
     end 
     end 


    def destroy 
     VisitorPermit.destroy_all(user_id: current_user) 
     respond_to do |format| 
     format.html { redirect_to root_path, notice: 'Permit was successfully canceled.' } 
     format.json { head :no_content } 
     end 
    end 

    def show 
     @vpermits = VisitorPermit.find(params[:id]) 
    end 

    def update 
     @vpermits = VisitorPermit.where(user_id: current_user).take 
     respond_to do |format| 
     if @vpermits.update(vpermit_params) 
      format.html { redirect_to root_path} 
      flash[:success] = "Permit successfully updated" 
      format.json { render :show, status: :ok, location: @user } 
     else 
      format.html { render :edit } 
      format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
     end 
    end 

    def edit 
     @vpermits = VisitorPermit.find(params[:id]) 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_vpermit 
     @vpermits = VisitorPermit.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def vpermit_params 
     params.require(:visitor_permit).permit(:vehicle_type, :name, :department, :carplate, :duration, :permitstart, :permitend) 
    end 
    end 
+1

Hat Ihr Benutzer 'has_many: vpermits'? Wie sieht Ihr Benutzermodell aus? Wie sieht Ihre Benutzerdatenbanktabelle aus? – spickermann

+0

Ahhh, ich habe mein Problem schon gefunden. Das Problem ist, dass ich vpermits benutzte, die mein has_many ist Besucher_permits. Jetzt habe ich es geändert, danke für den Hinweis auf den Fehler. –

Antwort

1

Von Ihrem Code Sie Vereinigung (has_many) haben könnte zwischen User und VistorPermit Modelle. Und Sie gaben Ihren Modellnamen als VistorPermit. So ist die Codezeile für buliding sollte wie folgt sein:

@vpermits = current_user.vistor_permits.build(vpermit_params) 
+0

Ja, das ist die Lösung –

Verwandte Themen