Rails 4错误:ActiveRecord :: RecordNotFound无法找到' id'

时间:2016-09-11 12:49:33

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord rubygems

在用户通过条带成功付款后,我对rails很陌生并且在改变数据库值方面苦苦挣扎。此外,付款后,它会以某种方式将我重定向到每一次“&subscriber / subscriberjobs / 1'出现以下错误的位置。相反,它应该指向应用程序的root_path。

这是出现的错误:

ActiveRecord::RecordNotFound in SubscriberjobsController#update
Couldn't find Job with 'id'=

以下是我所得到的:

路线

resources :subscriberjobs
resources :jobs

乔布斯控制器

def new
  if current_user
    @job = current_user.jobs.build
  else
    redirect_to new_user_session_path
  end
end
def create
  @job = current_user.jobs.build(job_params)

  if @job.save
    redirect_to "/subscriberjobs/new?job_id=#{@job.id}"
  else
    render 'new'
  end
end

Subscriberjobs Controller(这是什么不起作用!)

class SubscriberjobsController < ApplicationController

    before_filter :authenticate_user!

    def new
    end

    def update

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

        token = params[stripeToken]

        customer = Stripe::Customer.create(
            card: token,
            plan: 1004,
            email: current_user.email
            )

        @job.is_active = true
        @job.is_featured = false
        @job.stripe_id = customer.id
        @job.save

        redirect_to root_path

    end
end

表格

= simple_form_for @job do |f|
    = f.input :company, required: true
    = f.input :title, required: true
    = f.input :job_filename
    = f.input :location, required: true
    = f.input :sort
    = f.input :tag_list, required: true
    = f.input :content_one
    = f.input :content_two
    = f.input :content_three
    = f.hidden_field :job_id, value: params[:id]
    = f.button :submit

如果您需要其他信息,请告诉我。每个答案都非常感谢。谢谢!

2 个答案:

答案 0 :(得分:0)

你的问题在这里:

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

看起来,params [:job_id]等于nil。也许您的参数job_id被称为不同的东西,例如[:id]

其他问题是,为什么要更新Job中的SubscriberJobsController?如果您使用JobsController执行此操作,可能会更好吗?

答案 1 :(得分:0)

试试params[:job][:id]。在浏览器中使用View Source或Chrome开发工具用于检查表单的呈现方式,因为它会告诉您正在设置参数。此外,在提交表单时,请查看Rails日志 - 您将看到提交的参数。