0

Railsアプリでモバイルユーザーを他のビューにリダイレクトする方法を考えていますが、デバイスからモバイルビューをロードしていないため、何かが欠けています

application_controller.rb に、以下を追加しました。

def check_for_mobile
        session[:mobile_override] = params[:mobile] if params[:mobile]
        prepare_for_mobile if mobile_device?
    end

    def prepare_for_mobile
       prepend_view_path Rails.root + 'app' + 'views_mobile'
    end

    def mobile_device?
        if session[:mobile_override]
          session[:mobile_override] == "1"
        else
          # Season this regexp to taste. I prefer to treat iPad as non-mobile.
          (request.user_agent =~ /(iPhone|iPod|Android|webOS|Mobile)/) && (request.user_agent !~ /iPad/)
        end
    end

  helper_method :mobile_device?  

次に、ファイル app/views/views_mobile/guidelines/index.html.erb があります

iPhone でインデックス ページに移動すると、モバイル インデックス ビューが読み込まれません。どの部分が欠けているのかわかりません...

4

2 に答える 2

3

この種の問題のリダイレクトは悪い考えです。レスポンシブデザインをお試しください。Twitterのブートストラップから始めます。これにより、さまざまな画面サイズに適応する足場システムを開始できます。

また、これは ruby​​ on rails だけの問題ではありません。これは UI 設計の問題です。

ここにいくつかの良いアイデアがあります。

  • ビューを複製しないでください。将来的に維持するのが難しくなります。
  • CSS で CSS メディア クエリを使用して、スタイルを調整します。
  • 2 つのサイトを作成するのではなく、必要に応じて曲げたり曲げたりできる 1 つのサイトを作成するようにしてください。

そうは言っても、私はあなたの特定の質問には答えませんでしたが、代わりにあなたのやり方が間違っていることを示しようとしたので、これを正しいとマークしないかどうかはわかります.


レスポンシブ リソース。

于 2013-05-21T00:23:22.603 に答える
0

コード スニペットから除外しない限り、メソッドを呼び出している場所がわかりませんcheck_for_mobile。おそらく、次のように before_filter を application.rb に追加する必要があります。

before_filter :check_for_mobile

また、モバイル固有のビューを Rails アプリに組み込む方法については、Ryan Bates Railscast を参照することをお勧めします。彼の戦略はあなたが達成しようとしているものと似ていますが、ビューにサブフォルダーを使用する代わりに、「モバイル」MIME タイプを作成することで同じ問題を非常にエレガントに解決します。ここでチェックしてください:

http://railscasts.com/episodes/199-mobile-devices?view=asciicast

于 2013-05-21T00:38:42.577 に答える