2011-12-05 20 views
0

在我的編輯個人資料頁的Rails +設計 - registration_path是編輯默認路由

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %> 

在我的路線

devise_for :users, 
    :controllers => { 
     :registrations => "registrations", 
     :sessions => "sessions", 
     :invitations => 'invitations' 
    }, 
    :path => '/', 
    :path_names => { 
     :sign_in => 'login', 
     :sign_out => 'logout', 
     :sign_up => 'signup' 
    } 

    devise_scope :user do 
    root :to => "registrations#new" 
    get '/me/profile' => 'registrations#edit', :as => "myprofile" 
    get "/me/invites" => 'invitations#new', :as => 'myinvites' 
    end 

耙路線錯後:

 new_user_session GET  /login(.:format)         {:action=>"new", :controller=>"sessions"} 
      user_session POST  /login(.:format)         {:action=>"create", :controller=>"sessions"} 
    destroy_user_session DELETE  /logout(.:format)         {:action=>"destroy", :controller=>"sessions"} 
cancel_user_registration GET  /cancel(.:format)         {:action=>"cancel", :controller=>"registrations"} 
     user_registration POST  /             {:action=>"create", :controller=>"registrations"} 
    new_user_registration GET  /signup(.:format)         {:action=>"new", :controller=>"registrations"} 
    edit_user_registration GET  /edit(.:format)          {:action=>"edit", :controller=>"registrations"} 
         PUT  /             {:action=>"update", :controller=>"registrations"} 
         DELETE /             {:action=>"destroy", :controller=>"registrations"} 
        root   /             {:controller=>"registrations", :action=>"new"} 
       myprofile GET  /me/profile(.:format)        {:controller=>"registrations", :action=>"edit"} 

現在我的編輯當我包含:path => '/'時,用戶配置文件頁面不起作用。單擊更新配置文件不會更新我的用戶配置文件。

編輯用戶配置文件的形式是現在action = '/'(不工作),而不是以前action = '/users'(作品)

+1

請發佈相關'rake routes'字段 – Dex

+0

編輯並添加耙路線。看起來這些「/」路線有些奇怪。 –

回答

0

我相信

..., 
:controllers => { 
     :registrations => "registrations", 
     :sessions => "sessions", 
     :invitations => 'invitations' 
    }, 
    :path => '/', 
    :path_names => { 
     :sign_in => 'login', 
     :sign_out => 'logout', 
     :sign_up => 'signup' 
    } 

是沒有必要的。你只需要devise_for :users作爲stated in the README.rdoc

希望這會有所幫助。

+0

他們不需要功能,但需要進行自定義。 – Dex

+0

正如所述http://stackoverflow.com/questions/3827011/devise-custom-routes-and-login-pages,我補充說,因爲我不希望「用戶/ sign_in」等功能。我只想'/ login'成爲唯一登錄的地方。 –

0

設置自定義設計路線部分描述在the Devise Github Wiki

但是刪除映射(在本例中爲'user')並不完全清楚。 描述的:path => ''也打破了東西。

所以,如果你想: /sign_in代替/users/sign_in/register代替/users/register, 等。

你可以做什麼:

創建會話與註冊自定義控制器。 在這些控制器設置:

class Users::RegistrationsController < Devise::RegistrationsController 

    prepend_before_filter :set_devise_mapping 

private 

    def set_devise_mapping 
    request.env["devise.mapping"] ||= Devise.mappings[:user] 
    end 

end 

(同爲Users::SessionsController < Devise::SessionsController

下一頁添加以下到您的routes.rb:

devise_for :users, 
    :skip => [:sessions, :registrations], 
    :controllers => { 
     :omniauth_callbacks => 'users/omniauth_callbacks', 
     :registrations => 'users/registrations', 
     :passwords => 'users/passwords', 
     :sessions => 'users/sessions' 
    }, 
    # Setting empty path gives errors in registration_path. 
    # So we overwrite them here. 
    get 'sign_in' => 'users/sessions#new', :as => :new_user_session 
    post 'sign_in' => 'users/sessions#create', :as => :user_session 
    delete 'sign_out' => 'users/sessions#destroy', :as => :destroy_user_session 
    get 'register' => 'users/registrations#new', :as => :new_user_registration 
    post 'register' => 'users/registrations#create', :as => :user_registration 

中,也允許帳戶編輯您應該添加您自己的編輯和更新路線:

namespace :users do 
    resource :registration, only: [:edit, :update], path: '' 
    end