2016-09-11 3 views
1

Ich bin ziemlich neu in Schienen und kämpfen mit dem Ändern von Datenbankwerten, nachdem der Benutzer erfolgreich über Stripe bezahlt. Außerdem leitet es mich nach dem Bezahlen irgendwie immer zu '/ subscriberjobs/1' weiter, wo der folgende Fehler erscheint. Stattdessen sollte es zum root_path der Anwendung verweisen.Rails 4 Fehler: ActiveRecord :: RecordNotFound Konnte 'id' nicht finden

Dies ist der erscheinende Fehler:

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

Hier ist, was ich habe:

Routen

resources :subscriberjobs 
resources :jobs 

Jobs-Controller

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 (hier ist was funktioniert nicht!)

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 

Formular

= 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 

Bitte sagen Sie mir, wenn Sie weitere Informationen benötigen. Jede Antwort wird sehr geschätzt. Vielen Dank!

Antwort

0

Ihr Problem ist hier:

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

Es sieht aus, params [: job_id] gleich nil. Vielleicht heißt dein params job_id etwas anderes, zum Beispiel [:id]?

Andere Frage ist, warum Sie Job in SubscriberJobsController aktualisieren? Vielleicht ist es besser, wenn Sie JobsController verwenden, um dies zu tun?

+0

Vielen Dank für Ihre Antwort! Ich benutze diesen speziellen Controller, weil ich das nur tun möchte, wenn der Benutzer über den Stripe – jonhue

+0

bezahlt habe. Ich habe das Formular zu der Frage hinzugefügt und soweit ich sehen kann, heißt es tatsächlich 'job_id' – jonhue

+0

' = f .hidden_field: job_id, value: params [: id] 'Vielleicht fängt diese Zeile nicht deine params [: id]? –

0

Versuchen Sie params[:job][:id]. Verwenden Sie Quelle anzeigen im Browser oder z. Chrome-Entwicklungstools, um zu überprüfen, wie das Formular gerendert wird, da es Ihnen sagt, dass die Parameter festgelegt werden. Beobachten Sie auch das Rails-Protokoll, wenn Sie das Formular absenden - Sie werden sehen, welche Parameter gesendet wurden.

Verwandte Themen