Вложенный ресурс с Devise - Rails3 - PullRequest
10 голосов
/ 26 апреля 2011

Я пытаюсь настроить контроллер профилей для работы с разработанными зарегистрированными участниками.

Я создал Profile модель и контроллер и добавил one-to-one relationship, добавив belongs_to :member к моей profile.rb модели и has_one :profile в моем члене.rb model.

Для создания вложенного ресурса я использовал:

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

resources :members do
  resources :profiles
end

Вызов rake routes output

     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 inбраузер правильно перенаправляет меня на страницу profiles#index, но когда я пытаюсь вызвать member_profiles_path, происходит сбой со следующей ошибкой:

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

Может кто-нибудь увидеть, где я здесь не так?Я использую рельсы 3.0.3.

1 Ответ

10 голосов
/ 26 апреля 2011

Поскольку это ассоциация has_one, вы пытались использовать ресурс, а не ресурсы?

resources :members do
  resource :profile
end

После этого вы сможете сделать что-то вроде этого:

link_to "Profile", member_profile_path(@member)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...