我正在开发一个rails应用程序,我有 2个不同用户的角色:高级和基本。
我没有隐藏基本用户视图中的链接(a.i.使用CanCan),而是想管理 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
但我不想在每个操作中指定基本用户的模板({render:template =>“devices / index_basc.html.erb”}) 我认为还有其他方式(我希望更整洁:)
你有什么想法吗?
谢谢你, 的Alessandro
答案 0 :(得分:7)
您可以执行此类Railscast Mobile 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
答案 1 :(得分:0)
由于您只有两个不同的用户角色,您可以执行此操作
page = (current_operator.op_type =='basic')? "devices/index_basc.html.erb" : "index.html.erb"
format.html { render :template => page}