モバイル(アンドロイド/ iPhone/iPad)とデスクトップユーザーの両方でhttp://padrinorb.org(haml + lesscss)を使用している小さなウェブアプリケーションでコーディングしています。異なるデバイスのhtml/css。モバイル用とデスクトップ用の異なるファイルをレンダリングする
さまざまなクライアントを特定するために、私はrack-mobile-detectを使用しています。
application.mobile私はrender
def preferred_extension
if request.xhr?
"js"
elsif env["X_MOBILE_DEVICE"]
"mobile"
else
"html"
end
end
def preferred_layout
if preferred_extension.eql? "html"
"application"
else
"application.#{preferred_extension}"
end
end
def render_preferred filename
filename = "#{filename}.#{preferred_extension}"
if request.xhr?
layout_file = false
else
layout_file = "layouts/#{preferred_layout}".to_sym
end
render filename, :layout => layout_file
end
のためにこれらのヘルパー/ラッパーを使用/レイアウトはレイアウトになってもらうことが、パーシャルを扱うとき、これは私を助けていない...それは誰かのように感じていますレンダリングと部分的なヘルパーのラッピングだけではなく、より良い解決策が必要です。
私が望むのは、正確なレイアウトで正しい部分/ファイルをレンダリングするためにコントローラとビューを奇妙なコードで振りかけることではありません。
レンダリングの検出で、使用するファイルを探し、ファイル名がない場合はfilename.hamlに戻したいと考えています。#{preferred_extension} .haml。レールで
は、私が以前のプロジェクトで使用されるこのMIMEタイプのものがあるが、私はPadrinoのための同様のもの(シナトラ)
今のところ、params [:format] =:mobileを使用してviews/layout/application.mobile.hamlをレンダリングすることができるはずです – qzio