Как вложить devise_invitable маршрут, чтобы пригласить пользователя в конкретный проект - PullRequest
4 голосов
/ 20 февраля 2012

Задача

Я использую гемы devise и devise_invitable в веб-приложении для управления проектами. Я успешно приглашаю новых пользователей в веб-приложение.

Но мне нужно пригласить новых пользователей в конкретный проект и не могу понять, как это сделать. Мне нужен идентификатор проекта как часть маршрута, так что Я могу правильно подключить код контроллера.

Контекст

Соответствующий routes.rb раздел выглядит так:

devise_for :users, :controllers => { :invitations => "invitations" }

Итак:

  • users/invitation/new работает для новых приглашений.
  • Мои собственные invitations_controller.rb переопределяют значение по умолчанию InvitationsController
  • У меня есть :projects в качестве ресурса, который я использую, например,

     resources :projects do
       resources :milestones, :task ... etc
     end
    

(мне кажется) Я ищу что-то вроде этой работы:

users/invitation/projects/4f3423d34323/new

1 Ответ

5 голосов
/ 20 февраля 2012

Текущий подход заключается в указании маршрута с использованием devise_scope:

devise_for :users, :controllers => { :invitations => "invitations" }

devise_scope :user do 
   match "/projects/:project_id/invitations/new", :to => "invitations#new", :via => "get", :as => "new_project_invitation"
end  

Это означает, что я могу использовать:

Случай 1: users/invitation/new (для приглашения нового пользователя в веб-приложение)

и

Случай 2: projects/:project_id/invitations/new (для приглашения нового пользователя в веб-приложение + проект)

invitations_controller#new проверяет наличие :project_id и вызывает соответствующийповедение для случая 1 или 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...