ruby-on-rails - 我的控制器未定义方法“user_id”中的 Ruby-on-Rails NoMethodError 用于 nil:NilClass
问题描述
我的 ruby 应用程序抛出一个突然出现的错误。抛出的错误是 JobsDevsController 中的 NoMethodError # Listing=> undefined method `user_id' for nil:NilClass
在我的控制器中引发此错误的代码部分是
def is_authorised
redirect_to root_path, alert: "You don't have permission..." unless current_user.id == @job.user_id
end
我的控制器
class JobsDevsController < ApplicationController
before_action :set_jobs_dev , except: [:index, :new, :create, :show, :edit, :listing]
before_action :authenticate_user!, except: [:show, :listing]
before_action :is_authorised, only: [:listing, :budget, :description, :photo_upload, :location, :update, :show ]
# GET /jobs_devs
def index
@jobs_devs = JobsDev.all
end
# GET /jobs_devs/1
def show
end
# GET /jobs_devs/new
def new
@jobs_dev = current_user.jobs_devs.build
end
# def listing
# @jobs_dev = current_user.jobs_dev
# end
# GET /jobs_devs/1/edit
def edit
end
def budget
end
# POST /jobs_devs
def create
@jobs_dev = current_user.jobs_devs.build(jobs_dev_params)
if @jobs_dev.save!
redirect_to listing_jobs_dev_path(@jobs_dev), notice: 'Jobs dev was successfully created.'
else
render :new
end
end
# PATCH/PUT /jobs_devs/1
# def update
# if @jobs_dev.update(jobs_dev_params)
# redirect_to @jobs_dev, notice: 'Jobs dev was successfully updated.'
# else
# render :edit
# end
# end
def update
respond_to do |format|
if @jobs_dev.update(jobs_dev_params)
format.html { redirect_to @jobs_dev, notice: 'Post was successfully updated.' }
format.json { render :show, status: :ok, location: @jobs_dev }
else
format.html { render :edit }
format.json { render json: @jobs_dev.errors, status: :unprocessable_entity }
end
end
end
# DELETE /jobs_devs/1
def destroy
@jobs_dev.destroy
redirect_to jobs_devs_url, notice: 'Jobs dev was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_jobs_dev
@jobs_dev = JobsDev.find(params[:id])
end
def is_authorised
redirect_to root_path, alert: "You don't have permission..." unless current_user.id == @jobs_dev.user_id
end
# Only allow a trusted parameter "white list" through.
def jobs_dev_params
params.require(:jobs_dev).permit(:job_category, :job_type, :job_title, :job_description, :recurrence,
:budget, images: []
)
end
end
请你帮忙解决这个问题
解决方案
确保你 set_job 列出动作
您可能需要直接添加到列表操作
@job = current_user.job
或将其添加到列表操作之前的更好方法并考虑顺序
推荐阅读
- android - 如何从 Kotlin 的 ListView 中找到选定的元素?
- sql-server - 提高 SQL 查询效率 - 尝试索引、游标和并行
- android - 不允许任何所有者撤销创建房间/MUC 的用户的所有权 - Ejabberd XMPP
- ffmpeg - 如何在没有音频同步问题的情况下使用 FFMPEG 连接多个 MP4 视频?
- c# - MatchEvaluator 对大小写不敏感的文本换行,除非文本在图像 HTML 标记内(但不忽略所有标记)
- webpack - Webpack 构建成功,但是没有退出就挂了
- python - 在系列中查找匹配项,不包括子字符串
- r - 为什么我没有在图表上获得日期作为我的标题?
- php - 在codeigniter中以递减的方式从数据库中获取数据
- three.js - 在保持相同位置的同时更改 3D 模型的父级