未定义的局部变量或方法' current_job' - 邪恶的宝石

时间:2018-03-23 11:24:07

标签: ruby-on-rails ruby

这是我第一次使用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。

我不完全理解为什么它不起作用。如果有人会解释那也很棒!

如果您需要任何其他信息,请询问。

2 个答案:

答案 0 :(得分:1)

问题是你没有定义current_job,至少没有控制器可用的任何地方。

Wicked docs,请说明以下内容:

  

如果您没有current_user,请查看如何使用Wicked构建分步对象。

听起来好像你正在使用current_job用于Wicked及其步骤,而不是current_user,因此上述情况适用。文档建议遵循steps here

从简单的意义上说,你正在寻找两个动作中的工作,这两个动作都需要一个id参数。这意味着您可以使用以下内容将作业分配到@job

@job = Job.find(params[:id])

(假设您有Job型号。)

@jobshow操作中的代码更改为update,这应该会再次有用。

答案 1 :(得分:0)

内部show操作current_job方法未定义,需要在JobStepsControllerApplicationController中定义。