2017-03-21 2 views
0

Ich habe überall gesucht, um dies zu beheben - wenn ein Benutzer eine Registrierung fehlschlägt erstellen mit Devise, aus welchem ​​Grund auch immer sie umgeleitet werden '/ users', anstatt sich auf '/ users/sign_up' und persistierende die Fehler:Rails devise Umleitung auf '/ Benutzer' anstelle von '/ users/sign_up' bei fehlgeschlagener Registrierung

Hier sind meine Routen:

devise_for :users, controllers: { 
    sessions:  'users/sessions', 
    confirmations: 'users/confirmations', 
    registrations: 'users/registrations', 
    passwords:  'users/passwords', 
    invitations: 'users/invitations' 
}, sign_out_via: [:get, :delete] 

und /users/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 
    prepend_before_filter :require_no_authentication, only: [:new, :create] 

    def new 
    @body_class = "hold-transition register-page" 
    build_resource({}) 
    yield resource if block_given? 
    respond_with resource 
    end 

    def create 
    build_resource(sign_up_params) 
    resource.save 
    yield resource if block_given? 
    if resource.persisted? 
     if resource.active_for_authentication? 
     set_flash_message :notice, :signed_up if is_flashing_format? 
     sign_in(resource_name, resource) 
     respond_with resource, location: after_sign_up_path_for(resource) 
     else 
     set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format? 
     expire_data_after_sign_in! 
     respond_with resource, location: after_inactive_sign_up_path_for(resource) 
     end 
    else 
     clean_up_passwords resource 
     render :new 
    end 
    end 
end 

Wenn die Ressource nicht an der Stelle fort, wo es heißt machen: neu Ich habe versucht, die folgenden:

redirect_to new_user_registration_path(resource) - besteht keine Fehler

render :new - Routen zu "/ Benutzer aber nicht anhalten Fehler

respond_with resource

- tut gleiche wie: neue

respond_with resource, location: new_user_registration_path(resource) - wieder wie oben

Also, wenn die Ressource bestehen nicht, wie kann ich es einfach wieder gehen lernen auf dieselbe Seite - '/ users/sign_up' und behalte die Fehler? Ich habe einige sehr hacky Wege gesehen, aber es gibt keine Möglichkeit, dass Devise keine Lösung dafür bietet, anstatt es zu zwingen, zu '/ Benutzern' zu routen. Ich habe auch Lösungen gesehen, die eine Weiterleitung und das Setzen eines Blitzes beinhalten - das ist nichts, was ich tun möchte, sondern lieber die Fehler, die im Formular bestehen bleiben.

Vielen Dank

Antwort

0

Aus Ihrer Frage zu lesen, im vorausgesetzt, Sie zurück, wenn die Registrierung fehlschlägt gehen?

können Sie:

redirect_to :back 

Und in Ihrem Code wie folgt aus:

else 
    clean_up_passwords resource 
    render :new 
    redirect_to :back 
end 
+0

[Meine Frage] (http://stackoverflow.com/questions/43227666/why-does-devise -redirect-sign-up-error-to-a-different-Seite) ist sehr ähnlich. Kannst du mir bitte helfen? – Wit

Verwandte Themen