2016-10-26 2 views
0

Ich lese den ganzen Thread auf diesem, aber ich kann immer noch nicht herausfinden, was los ist. Ich habe alle Implementierungshandbücher durchgegangen und bin ihnen gefolgt, aber nach einer neuen Benutzerregistrierung geht die Weiterleitung an den Benutzercontroller, insbesondere Benutzer # show.Devise after_sign_up_for Pfad funktioniert nicht

Der erste Aufruf einer neuen Registrierung läuft über meinen Registrierungscontroller. Das wurde bestätigt. Aber nach der Registrierung passiert es den Registrationscontroller nicht mehr. Es geht durch den Benutzer Controller. Ich habe die beiden übergeordneten Methoden in den neuen Registratur-Controller unterbrochen und sie haben nie getroffen.

/routes.rb

Rails.application.routes.draw do 
    root to: 'app#index' 

    devise_for :users, controllers: { registrations: "registrations" } 

    resources :users do 
    member do 
     put 'follow', to: 'users#follow' 
     put 'unfollow', to: 'users#unfollow' 
    end 
    end 

end 

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController 
protected 
    #call for new registration does pass through here 
    #after new registration does not pass through here 


    def after_inactive_sign_up_path_for(resource) 
    #never gets here after new registration 
    other_path(resource) 
    end 

    def after_sign_up_path_for(resource) 
    #never gets here after new registration 
    other_path(resource) 
    end 

end 

neues Anmeldeformular:

<form action="index.html"> 

    <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
     <%= devise_error_messages! %> 

    <div class="form-group"> 
     <%= f.email_field :email, autofocus: true, placeholder: "Email", class: "form-control rounded input-lg text-center no-border" %> 
    </div> 

    <div class="form-group"> 
     <% if @minimum_password_length %> 
     <em>(<%= @minimum_password_length %> characters minimum)</em> 
     <% end %><br /> 
     <%= f.password_field :password, autocomplete: "off", placeholder: "Password", class: "form-control rounded input-lg text-center no-border" %> 

    </div> 

    <div class="form-group"> 
     <%= f.password_field :password_confirmation, autocomplete: "off", placeholder: "Confirm Password", class: "form-control rounded input-lg text-center no-border" %> 
    </div> 

    <div class="checkbox i-checks m-b"> 
     <label class="m-l"> 
     <input type="checkbox" checked=""><i></i> Agree the <a href="#">terms and policy</a> 
     </label> 
    </div> 

    <button type="submit" class="btn btn-lg btn-warning lt b-white b-2x btn-block btn-rounded"><i class="icon-arrow-right pull-right"></i><span class="m-r-n-lg">Sign up</span></button> 
    <% end %> 

    <div class="text-center m-t m-b"><small><%= link_to "Already have an account?", new_session_path(resource_name) %></small></div> 

Konsole:

Started GET "https://stackoverflow.com/users/index.html?utf8=%E2%9C%93&authenticity_token=KlAk4ctYpw%2F2eHGqZ0OsAymf5BxUPxeBiFzeOatn2JDUQJdPk8fGoB%2BmuN4oeN3KviQdVwN%2FxMfnjH4zIVooOg%3D%3D&user%5Bemail%5D=asdf%40asdf.com&user 
%5Bpassword%5D=[FILTERED]&user%5Bpassword_confirmation%5D=[FILTERED]" for ::1 at 2016-10-25 22:10:37 -0400 
Processing by UsersController#show as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"KlAk4ctYpw/2eHGqZ0OsAymf5BxUPxeBiFzeOatn2JDUQJdPk8fGoB+muN4oeN3KviQdVwN/xMfnjH4zIVooOg==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED] 
", "password_confirmation"=>"[FILTERED]"}, "id"=>"index"} 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 0], ["LIMIT", 1]] 

Completed 404 Not Found in 3ms (ActiveRecord: 0.3ms) 



ActiveRecord::RecordNotFound (Couldn't find User with 'id'=index): 

app/controllers/users_controller.rb:6:in `show' 
    Rendering /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout 
    Rendering /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb 
    Rendered /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (3.7ms) 
    Rendering /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb 
    Rendered /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.8ms) 
    Rendering /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb 
    Rendered /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (2.0ms) 
    Rendered /Users/Joe/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (69.3ms) 

Anfrage params:

{"utf8"=>"✓", 
"authenticity_token"=>"KlAk4ctYpw/2eHGqZ0OsAymf5BxUPxeBiFzeOatn2JDUQJdPk8fGoB+muN4oeN3KviQdVwN/xMfnjH4zIVooOg==", 
"user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, 
"id"=>"index", 
"format"=>"html"} 
+0

fügen Sie Ihren kompletten Registrierungs-Controller ein. Ihre Registrierungsmethode create ist falsch, das Formular sollte auf "Registrierungen erstellen" umleiten, aber es wird den Nutzern angezeigt, dass Ihr Formular eine falsche URL hat. Bitte fügen Sie das Formular – Sravan

+0

@Sravan Das war es !! Es gab ein extra führendes Formular-Tag, das zu index.html ging. Aktualisierter Code oben für die Anzeige. Das zusätzliche Formular-Tag war von einem vorherigen Bit-Code übrig geblieben. – j0j0j0

+0

ist es jetzt getan? Wenn nicht, was ist Ihr Pfad für Registrierungscontroller? – Sravan

Antwort

2

Wenn Sie users#show, der richtige Pfad Helfer sollte user_path(resource) gehen wollen, ist es, was Sie wollen?

0

Es sieht so aus, als ob das Problem zweifach ist. Der Registrierungscontroller sucht nach dem falschen Pfad, benötigt aber auch eine richtige ID. Ich denke, die Lösung hier ist, es user_path(@user.id) statt Ressource als Argument zu übergeben, wo Sie es in new_user_path(resource) haben.

Es wird versucht, nach einem Benutzer mit der ID "Index" zu suchen, der nicht existiert und daher einen Fehler verursacht. Sie sollten die id Ihres neuen Benutzers finden und diese in die Route einfügen, damit sie das bestimmte Benutzerprofil findet. Ich habe @user als Beispiel benutzt. Sie können diese Variable im Code definieren oder mit der gewünschten Variablen arbeiten. Ich hoffe das hilft!

Verwandte Themen