嵌套资源与Devise - Rails3

Rob*_*eri 10 ruby-on-rails devise

我正在尝试设置配置文件控制器以与设计注册成员一起工作.

我已经创建了Profile模型和控制器,并one-to-one relationship通过添加belongs_to :member到我的profile.rb模型和has_one :profile我的member.rb模型中添加了一个.

要创建我使用的嵌套资源:

devise_for :members, :path => "accounts",:path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

resources :members do
  resources :profiles
end
Run Code Online (Sandbox Code Playgroud)

呼叫rake routes输出

     member_profiles GET    /members/:member_id/profiles(.:format)          {:action=>"index", :controller=>"profiles"}
                     POST   /members/:member_id/profiles(.:format)          {:action=>"create", :controller=>"profiles"}
  new_member_profile GET    /members/:member_id/profiles/new(.:format)      {:action=>"new", :controller=>"profiles"}
 edit_member_profile GET    /members/:member_id/profiles/:id/edit(.:format) {:action=>"edit", :controller=>"profiles"}
      member_profile GET    /members/:member_id/profiles/:id(.:format)      {:action=>"show", :controller=>"profiles"}
                     PUT    /members/:member_id/profiles/:id(.:format)      {:action=>"update", :controller=>"profiles"}
                     DELETE /members/:member_id/profiles/:id(.:format)      {:action=>"destroy", :controller=>"profiles"}
Run Code Online (Sandbox Code Playgroud)

localhost:3000/members/1/profiles在浏览器中正确的路线我的profiles#index网页,但是当我尝试调用member_profiles_path失败,出现以下错误:

No route matches {:controller=>"profiles"}
Run Code Online (Sandbox Code Playgroud)

有人能看到我在哪里错了吗?我正在使用rails 3.0.3.

mbr*_*ing 10

由于这是一个has_one关联,您是否尝试过使用资源而不是资源?

resources :members do
  resource :profile
end
Run Code Online (Sandbox Code Playgroud)

那么你应该能够做到这样的事情:

link_to "Profile", member_profile_path(@member)
Run Code Online (Sandbox Code Playgroud)