2014-02-08 183 views
0

使用Rails 4和試圖找出如何做一個嵌套的路線devise_user上的個人資料,並計劃Rails的路由資源

繼承人我的routes.rb

devise_for :users, :path => '', :path_names => {:sign_in => 'login', :sign_out => 'logout'} 
    resource :profile , :only => [ :edit, :update] 
    resource :plan 

我的繼承人是怎麼設計添加上註冊的個人資料,萬一你想知道

class User < ActiveRecord::Base 

    has_one :profile, dependent: :destroy 
    after_create :create_profile 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

private 
    def create_profile 
    self.profile = Profile.create 
    end 
end 
+0

在您的routes.rb文件中,如果要爲控制器定義RESTful路由,請使用複數個「resources」而不是單個「resource」。例如:您應該將'resource:plan'更改爲'resources:plan'。 –

+1

@KirtiThorat'資源'應該適用於單數資源,這是我所認爲的'profile'就是這種情況。請參閱[ActionDispatch :: Routing :: Mapper :: Resources](http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html) – Tim

+0

@Tim感謝您提供我的知識。 –

回答

0

嘗試在包裹你的額外路線。喜歡的東西:

devise_scope :user do 
    resource :profile , :only => [ :edit, :update] 
    resource :plan 
end 

雖然我只注意到你有path設置爲「」,因此不會有反正路徑前綴,所以我不知道你的總體目標是什麼。您可能需要根據您定義控制器的位置將其指向您的控制器 - 例如,如果您在應用程序的控制器目錄中定義了您的配置文件控制器,則不希望嘗試在其命名空間中查找配置文件控制器,因此您可能需要在個人資料資源上指定to: => 'profile'