针对不同用户角色的不同视图集

针对不同用户角色的不同视图集

问题描述:

我正在开发一个rails应用程序,我有2个不同的用户角色:高级和基本。针对不同用户角色的不同视图集

我想管理2个不同的视图集合:一个用于高级用户,一个用于基本用户。

目前我这样我的工作:

case current_operator.op_type 
     when 'basic' 
     format.html { render :template => "devices/index_basc.html.erb" } 
     when 'advanced' 
     format.html # index.html.erb 
end 

,但我不喜欢在指定的每一个动作为基本用户模板({呈现:模板=>“设备/ index_basc.html.erb” }) 我觉得还有一些其他的方法(我希望更整洁:)

你有什么想法吗?

谢谢 亚历山德罗

你可以做这样的事情在这个RailscastMobile Devices

config/initializers/mime_types.rb添加:

Mime::Type.register_alias "text/html", :basic 

app/controllers/application_controller.rb加:

before_filter :check_user_status 
private 
def check_user_status 
    request.format = :basic if current_operator.op_type == 'basic' 
end 

现在,你可以做你的控制器如下:

class SomeController < ApplicationController 
    def index 
    # … 
    respond_to do |format| 
     format.html # index.html.erb 
     format.basiC# index.basic.erb 
    end 
    end 
end 
+0

index.basic.erb?其中的文件格式为 – Salil 2010-07-01 11:10:38

+0

'Mime :: Type.register_alias“text/html”,:basic'这是html的别名,但这种方式根据用户类型可以有两个不同的模板 – jigfox 2010-07-01 11:16:56

+0

什么是downvote?很高兴知道我做了什么错误来纠正错误。 – jigfox 2010-07-01 11:18:11

当你只有两个不同的用户角色,你可以做到这一点

page = (current_operator.op_type =='basic')? "devices/index_basc.html.erb" : "index.html.erb" 
format.html { render :template => page} 
+2

但他仍然需要做的每一个动作。他说:“但我不想在每个操作中指定基本用户的模板({render:template =>”devices/index_basc.html.erb“})” – jigfox 2010-07-01 11:09:19