【问题标题】:Undefined local variable or method 'current_job' - Wicked Gem未定义的局部变量或方法'current_job' - Wicked Gem
【发布时间】:2018-03-23 20:03:24
【问题描述】:

这是我第一次使用 Wicked gem,但我的 Wicked 控制器中不断出现错误。

错误是这样的:

未定义的局部变量或方法 `current_job' for # 你的意思是?当前用户

控制器:

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。

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

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

    Wicked docs,说如下:

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

    在我看来,您使用 current_job 表示 Wicked 及其步骤,而不是 current_user,因此上述适用。文档建议关注steps here

    简单来说,您正在寻找包含两个操作的工作,这两个操作都需要id 参数。这意味着您可以使用以下内容将作业分配给@job

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

    (假设您有一个Job 模型。)

    showupdate 操作中的代码替换@job 的分配,这应该会再次起作用。

    【讨论】:

    • 这对 @miklki14567 有帮助吗?
    【解决方案2】:

    show里面的actioncurrent_job方法没有定义,需要在JobStepsController或者ApplicationController中定义。

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多