Rails - 一个控制器的多个视图

时间:2014-03-21 00:07:49

标签: ruby-on-rails

我想给我的应用程序2个不同的视图(HTML,CSS,JS):

  1. 未经授权的用户(好看的用户)
  2. 仅适用于授权用户(具有所有模型数据的原始表和 其可用的操作按钮)
  3. 并允许授权用户在它们之间切换。

    至于现在,我有第二名,我将创建用户授权(可能使用CanCan gem),然后是第一名。

    guide.rubyonrails.org“2.2.12.2在运行时选择布局”描述了在布局之间切换的好方法,但我认为这对我来说还不够。

    在我的情况下,两种布局看起来都一样或几乎相同:

    <!DOCTYPE html>
    <html>
    <head>
    # layout depended JS and CSS maybe
    </head>
    <body class="container">
    
    <%= render 'layouts/navbar' %>
    <%= render 'layouts/flash' %>
    
    <%= yield %>
    
    </body>
    </html>
    

    我感兴趣的是以某种方式决定将使用哪个文件夹来填充上面的yield。 我有slide_controller.rb和/ app / views / slides / *我想创建一个,比如/ app / views / slides_nice / *并使用相同的slide_controller来决定应该使用哪个进行渲染。

1 个答案:

答案 0 :(得分:1)

我认为您需要的是在控制器中进行身份验证并提供不同的模板来呈现。

例如(假设有来自设计或您自己的身份验证错误的current_user帮助程序):

if current_user 
  render "template_1" 
else 
  render "template_2"

CanCan目前已经过时,因为R Bates不再更新它。它不适用于新的rails版本。我不确定基于角色的授权是否符合您的要求,您似乎只想隐藏来宾用户的内容。