3

私はレールアプリを開発しており、上級者と基本者の2つの異なるユーザーの役割があります。

基本ユーザーのビュー ( CanCan を使用する ai ) のリンクを非表示にする代わりに、上級ユーザー用と基本ユーザー用の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" } ) 他の方法があると思います (もっときちんとしたい :)

あなたはなにか考えはありますか ?

ありがとう、アレッサンドロ

4

2 に答える 2

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
于 2010-07-01T11:07:35.390 に答える
0

ユーザーの役割が2つしかないため、これを行うことができます

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 に答える