针对不同Devise用户的不同视图

时间:2015-06-12 23:02:41

标签: ruby-on-rails ruby authentication devise

我的应用程序中有三个Devise模型:用户,发布者和内容创建者。

发布商继承自内容创作者,内容创作者继承自用户。

我在每个模型的视图文件夹中放置了一个自定义index.html.erb文件,而不是默认的用户index.html.erb文件,这意味着,如果发布者登录,我希望他们请参阅views / publishers中的index.hml.erb,而不是帖子中的index.hml.erb。

我为具有索引操作的内容创建者和发布者创建了单独的控制器。 这是我目前的路线档案:

  devise_for :users
  devise_for :publishers , :controllers => { registrations: 'registrations' }
  devise_for :content_creators 
  resources :posts 
  get 'tagged' => 'posts#tagged', :as => 'tagged'
  root "posts#index"

如何配置我的路线文件来执行此操作?

1 个答案:

答案 0 :(得分:0)

由于每个人都是用户,因此您可以在视图中通过

进行检查
if current_user.publisher?
  <%= render 'view_for_publisher' %>
elsif current_user.content_creator?
  <%= render 'view_for_content_creator' %>
else
  <%= render 'default_view' %>
end

或在控制器中,您可以使用所需视图重定向到另一个操作,而不是渲染。 我希望它会有所帮助。