Как настроить ресурсный корень на странице показа ресурсов в Rails? - PullRequest
0 голосов
/ 21 января 2012

Приложение My Rails 3.1 имеет две пользовательские модели: User и Admin.Я использую Devise.

Мой rout.rb содержит

root :to => "pages#welcome"

, где пользователи могут войти в систему как пользователь или администратор.

После входа в систему корневой путьдолжен измениться.Корнем для администраторов должен быть «admins # dashboard», корнем для пользователей должна быть страница показа текущего пользователя.

У меня проблемы с поиском наилучшего решения, и у меня есть три вопроса.

  1. Как определить ресурсы для определенных корней.Я чувствую, что должен определить 'user_root_path' и 'admin_root_path', но не смог определить синтаксис для этого в моем файле маршрутов?
  2. Как передать идентификатор текущего пользователя, чтобычто я могу получить root права на страницу показа пользователя?
  3. Как я могу гарантировать, что в любой момент времени может быть активен только сеанс пользователя или администратора, и что пользователи не могут войти в систему как одновременно?

Я был бы очень признателен за указатель в правильном направлении, так как это поставило меня в тупик!

Спасибо.

Ответы [ 3 ]

1 голос
/ 21 января 2012

Вы можете использовать пространство имен для пользователей Admin => 2 разных корня.Также взгляните на файл конфигурации devise devise.rb, в котором есть некоторые настройки для управления областями (Пользователь и Администратор).Например:

 # ==> Scopes configuration
  # Turn scoped views on. Before rendering "sessions/new", it will first check for
  # "users/sessions/new". It's turned off by default because it's slower if you
  # are using only default views.
  # config.scoped_views = false

  # Configure the default scope given to Warden. By default it's the first
  # devise role declared in your routes (usually :user).
  # config.default_scope = :user

  # Configure sign_out behavior.
  # Sign_out action can be scoped (i.e. /users/sign_out affects only :user scope).
  # The default is true, which means any logout action will sign out all active scopes.
  # config.sign_out_all_scopes = true

Если вы не знакомы с пространствами имен, вы можете прочитать о них здесь

0 голосов
/ 01 марта 2012

После небольшого копания и некоторых указаний от Михаила мне удалось ответить на этот вопрос сам.

В моем файле rout.rb я добавил следующее:

root :to => "pages#welcome"

для определения рута для неаутентифицированных пользователей.

authenticated :admin do
    root :to => "dashboard#show"
end

для определения корня для аутентифицированных администраторов и

match '/dashboard' => "dashboard#show", :as => :admin_root

чтобы определить администратора после перенаправления входа в систему и привести в порядок путь.

Спасибо за все ответы!

0 голосов
/ 21 января 2012

страниц # добро пожаловать <--- в этом контроллере и действии отправлять параметры анонимно </p>

Не могли бы вы попробовать это в вашем приложении. Rb

def after_sign_in_path_for(resource)
  if params[:anonymous].eql?("1") // mean user
    redirect_to user_root_path, :user_id => current_user.id
  else // mean administration
    redirect_to admin_root_path
  end
end

config user_root_path и admin_root_path к месту назначения, которое вы хотите в route.rb

Надеюсь, это поможет.

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