モバイルとデスクトップのさまざまなファイルをレンダリングします
質問
私は小さなWebアプリを使用してコーディングしています http://padrinorb.org (HAML+LESSCSS)モバイル(Android/iPhone/iPad)とデスクトップユーザーの両方の場合、さまざまなデバイスにわずかに異なる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に戻るFilenameがない場合は、Filename.hamlに戻ります。
Railsには、以前のプロジェクトで使用したこのマイムタイプのものがありますが、Padrino(Sinatra)に似たものはありません
解決
設定して解決しました @_content_type
各アプリ/コントローラー内のブロックの前のブロックでfeled_extension/
所属していません StackOverflow