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
您的用戶是否有'的has_many:vpermits'?你的用戶模型是怎樣的?你的用戶數據庫表是怎麼樣的? – spickermann
啊,我發現我的問題了。問題是我使用的是我的has_many是visitor_permits的vpermits。現在我改變了它,謝謝你指出錯誤。 –