2014-02-08 55 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'