Rails направляет root с вложенным ресурсом - PullRequest
5 голосов
/ 26 сентября 2010

У меня есть вложенный ресурс в моем routes.rb, например:

map.resources :users, :only => [:index] do |user|
  user.resources :projects
end

, который дает мне URL-адреса, такие как /users/2/projects, которые будут отображать все проекты, принадлежащие user 2. После того, как пользователь вошел в систему, я бы хотел, чтобы это была корневая страница, используя map.root. Как бы установить map.root, чтобы включить это? Я использую devise, чтобы я мог получить текущего пользователя с помощью current_user, но я не уверен, что это доступно в routes.rb.

Ответы [ 3 ]

4 голосов
/ 26 сентября 2010

Мы решаем эту проблему с помощью HomepageController, который отображает два разных шаблона на основе if current_user.

1 голос
/ 26 сентября 2010

Вы настроили бы свой маршрут к RootController контроллеру в routes.rb рядом с существующим вложенным маршрутом:

map.root :controller => :root

Контроллер RootController index может затем обработать index действие ProjectsController:

class RootController < ApplicationController
  def index
    render :controller => :projects, :action => :index
  end
end

И, наконец, ProjectsController будет использовать current_user для отображения соответствующего списка проектов:

class ProjectsController < ApplicationController
  def index
    @projects = Project.all.find_by_user(current_user)
  end
end

Здесь скрываются детали аутентификации и т. Д.

0 голосов
/ 27 сентября 2010

Вы можете перенаправить на эту страницу после аутентификации в вашем методе фильтрации:

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