2017-02-02 14 views
7

Khi người dùng đăng ký thất bại, ứng dụng của tôi sẽ chuyển hướng họ đến url gốc thay vì hiển thị trang đăng ký.Rails & Devise: Thất bại đăng ký thất bại chuyển hướng đến url gốc

Tuyến đường:

resources :users 
    devise_for :users, path: '', path_names: { sign_up: 'register', sign_in: 'login', sign_out: 'logout'}, :controllers => { :omniauth_callbacks => "callbacks" } 

đăng ký # mới:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:class => "col s12 form-text", autocomplete: "off"}) do |f| %> 

    <%# render 'devise/errors', resource: resource %> 
    <div class="row"> 
    <div class="input-field col s12"> 
     <%= f.text_field :full_name, :class => "validate", :required => true, :placeholder => "Robin Smith" %> 

     <%# f.label :full_name, :class => "allcaps active", :data => {:error => 'Name Required'} %> 
     <%= f.label :full_name, :class => "allcaps" %> 
    </div> 
    </div> 

    <div class="row"> 
    <div class="input-field col s12"> 
     <%= f.email_field :email, :class => "validate", :required => true, placeholder: " " %> 
     <%= f.label :email, :class => "allcaps" %> 
    </div> 
    </div> 

    <div class="row"> 
    <div class="input-field col s12"> 
     <%= f.password_field :password, :class => "validate", :required => true, placeholder: " " %> 
     <%= f.label :password, "password (min 6 chars)", :class => "allcaps" %> 
    </div> 
    </div> 

    <div class="button-container"> 
    <button class="waves-effect btn-flat btn-large"type="submit" name="action">Join Now</button> 
    </div> 
<% end %> 

tôi có thể đi đến mydomain.com/register và các hình thức xuất hiện. Nhưng khi có một nỗ lực đăng ký không thành công, chúng được chuyển hướng đến url gốc thay vì hiển thị lại trang đăng ký có lỗi.

Tôi cảm thấy có điều gì đó sai trong các tuyến đường của mình. Bất kỳ ý tưởng?

Trả lời

8

Bạn có thể ghi đè lên các lập mưu tạo ra hành động và chuyển hướng đến url của bạn:

# registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 

    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 
     sign_up(resource_name, resource) 
     respond_with resource, location: after_sign_up_path_for(resource) 
     else 
     set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}" 
     expire_data_after_sign_in! 
     respond_with resource, location: after_inactive_sign_up_path_for(resource) 
     end 
    else 
    clean_up_passwords resource 
    set_minimum_password_length 
    resource.errors.full_messages.each {|x| flash[x] = x} 
    #redirect_to your_path 
    end 
    end 

end 

Và trong các tuyến đường:

resources :users 
    devise_for :users, path: '', path_names: { sign_up: 'register', sign_in: 'login', sign_out: 'logout'}, :controllers => { :registrations => "registrations", :omniauth_callbacks => "callbacks" } 
Các vấn đề liên quan