3

我正在开发一个 Rails 应用程序,我有2 个不同的用户角色:高级和基本。

而不是隐藏基本用户视图中的链接(使用 CanCan 的ai)我想管理两组不同的视图:一个用于高级用户,一个用于基本用户。

目前我正在以这种方式工作:

 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" })我认为还有其他方式(我希望更简洁:)

你有什么想法 ?

谢谢你,亚历山德罗

4

2 回答 2

7

您可以在此Railscast 移动设备中执行类似操作:

补充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
于 2010-07-01T11:07:35.390 回答
0

由于您只有两个不同的用户角色,您可以这样做

page = (current_operator.op_type =='basic')?  "devices/index_basc.html.erb"  : "index.html.erb"
format.html { render :template => page}
于 2010-07-01T10:58:38.737 回答