2016-09-11 84 views
0

我是相當陌生的Rails,並且在用戶通過條帶成功付款後正在努力改變數據庫值。另外支付後,它不知何故每次都重定向到'/ subscriberjobs/1',這不存在。相反,它應該直接指向應用程序的root_path。Rails 4:更改數據庫值

以下是我有:

路線

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' 
    else 
    render 'new' 
    end 
end 

Subscriberjobs控制器(這裏是行不通!)

class SubscriberjobsController < ApplicationController 

    before_filter :authenticate_user! 

    def new 
    end 

    def update 

     token = params[stripeToken] 

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

     Job.is_active = true # doesn't work 
     Job.is_featured = false # doesn't work 
     Job.stripe_id = customer.id # doesn't work 
     Job.save # doesn't work 

     redirect_to root_path # doesn't work 

    end 
end 

請求告訴我你是否需要更多信息。每一個答案都非常讚賞。謝謝!

+0

什麼錯誤?隨你 ? –

+0

你想在這個聲明中做什麼? - Job.is_active。 – dnsh

+0

@BartekGładys一個錯誤,因爲它將我引向一個不存在的頁面。這就是爲什麼我想重定向到root_path。此外,我在控制檯中看到'is_active'仍然是錯誤的並且不正確 – Gugubaight

回答

1

將保存的工作ID作爲參數發送到subscriberjobs/new。您可以在subscriptionjobs/new html表單中保留隱藏字段,該字段的值爲job_id,這將調用您的SubscriberjobsController#update方法。有使用參數訪問它。

在JobController#創建

redirect_to "/subscriberjobs/new?job_id=#{@job.id}" 

在你SubScribeJob形式

hidden_field_tag 'job_id', params[:job_id] 

在你SubScribeJobCotroller

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

在此先感謝您的解釋!我以某種方式得到這個錯誤:'未定義的方法'合併'爲零:NilClass'爲表格行('= f.hidden_​​field'job_id',params [:job_id]')。從來沒有這樣。什麼是合併? – Gugubaight

+0

@Gugubaight,檢查這個http:// stackoverflow。com/questions/6636875/rails-hidden-field-undefined-method-merge-error – dnsh

+0

嗯......我得到正確的url:'http:// localhost:3000/subscriberjobs/new?job_id = 2',但在出現更新此錯誤:SubscriberjobsController中的ActiveRecord :: RecordNotFound#update 無法找到具有'id'='的作業,它將我引導至此頁面:'http:// localhost:3000/subscriberjobs/1' 'is_active'仍然是'false' – Gugubaight