带设计嵌套资源-Rails3 [英] Nested Resource with Devise - Rails3

查看:45
本文介绍了带设计嵌套资源-Rails3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to setup a profiles controller to work with devise registered members.

我已经创建了 Profile 模型&控制器并通过将 belongs_to:member 添加到我的 profile.rb 模型和 has_one:profile 在我的 member.rb 模型中.

I've created the Profile model & controller and added a one-to-one relationship by adding belongs_to :member to my profile.rb model and has_one :profile in my member.rb model.

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

To create the nested resource I used:

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

resources :members do
  resources :profiles
end

调用 Rake路由输出

     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"}

在浏览器中转到 localhost:3000/members/1/profiles 可以正确地将我路由到 profiles#index 页面,但是当我尝试调用 member_profiles_path时失败,并显示以下错误:

Going to localhost:3000/members/1/profiles in the browser correctly routes me to the profiles#index page, but when I try calling member_profiles_path it fails with the following error:

No route matches {:controller=>"profiles"}

有人可以看到我在哪里错吗?我正在使用Rails 3.0.3.

Can anyone see where I'm going wrong here? I'm using rails 3.0.3.

推荐答案

由于这是has_one关联,因此您是否尝试使用资源而不是资源?

Since this is a has_one association, have you tried using resource rather than resources?

resources :members do
  resource :profile
end

然后您应该可以执行以下操作:

You should then be able to do something like this:

link_to "Profile", member_profile_path(@member)

这篇关于带设计嵌套资源-Rails3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆