2016-10-09 43 views
0

我正在使用Ruby on Rails實現一個網站。我遇到了麻煩,無法創建新數據並保存到我的模型中。我得到的錯誤是這個錯誤指向@vpermits = current_user.vpermits.build(vpermit_params)。任何人都知道我做錯了什麼?無法創建數據軌,沒有方法錯誤

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 

這是我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

您的用戶是否有'的has_many:vpermits'?你的用戶模型是怎樣的?你的用戶數據庫表是怎麼樣的? – spickermann

+0

啊,我發現我的問題了。問題是我使用的是我的has_many是visitor_permits的vpermits。現在我改變了它,謝謝你指出錯誤。 –

回答

1

UserVistorPermit模型之間的代碼,你可能有關聯(的has_many)。你給你的型號名稱爲VistorPermit。所以 線爲棟代碼應該是這樣的:

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

是的,這是解決方案 –

相關問題