这是我第一次使用Wicked gem并且在我的Wicked控制器中不断出现错误。
错误是这样的:
未定义的局部变量或方法`current_job'为#你的意思? CURRENT_USER
控制器:
class JobStepsController < ApplicationController
include Wicked::Wizard
steps :company_info, :payment
def show
@job = current_job
render_wizard
end
def update
@job = current_job
@job.attributes = params[:job]
render_wizard @job
end
def create
@job = Job.new(params[:job])
if @job.save
session[:job_id] = @job.id
redirect_to job_steps_path
else
render :new
end
end
private
def redirect_to_finish_wizard
redirect_to @job, notice: 'Thank you for job posting'
end
end
我使用的是Rails 5.1.5。
我不完全理解为什么它不起作用。如果有人会解释那也很棒!
如果您需要任何其他信息,请询问。
答案 0 :(得分:1)
问题是你没有定义current_job
,至少没有控制器可用的任何地方。
Wicked docs,请说明以下内容:
如果您没有current_user,请查看如何使用Wicked构建分步对象。
听起来好像你正在使用current_job
用于Wicked及其步骤,而不是current_user
,因此上述情况适用。文档建议遵循steps here。
从简单的意义上说,你正在寻找两个动作中的工作,这两个动作都需要一个id
参数。这意味着您可以使用以下内容将作业分配到@job
:
@job = Job.find(params[:id])
(假设您有Job
型号。)
将@job
和show
操作中的代码更改为update
,这应该会再次有用。
答案 1 :(得分:0)
内部show
操作current_job
方法未定义,需要在JobStepsController
或ApplicationController
中定义。