2011-01-14 12 views
0

私はiPhoneとAndroid用に:mobileフォーマットを宣言し、モバイル用にshow.mobile.haml、Web用にshow.html.hamlを提供するRailsアプリケーションに取り組んでいます。複数のフォーマット用に1つのアプリケーションレイアウトを作成する

モバイルリクエストフォーマットは明らかにapplication.mobile.hamlを使用し、webはapplication.html.hamlを使用しますが、どちらのレイアウトも同じですが、ビューのみが異なります。

私の質問は、モバイルとHTMLの両方のリクエストフォーマットにどのように単一のアプリケーションレイアウトを使用するのですか? RailsのAPIドキュメントを掘り下げてしまって、明白な解決策が見つからないようです。

答えて

0

何もする必要はありません。これは、URLに拡張子を追加すると自動的に発生します。 /controller/action.mobileに移動した場合は、action.mobile.hamlビューがレンダリングされます。 /controller/action.htmlに移動した場合は、action.html.hamlビューがレンダリングされます。

この動作は、の形式パラメータで管理されています(これはルートファイルで確認できます)。したがって/controller/action.mobile/controller/action?format = mobileと同じです。

もちろん、現在のフォーマットに応じて動作が異なるようにしたい場合もあります。これは、respond_toメソッドとrespond_withメソッドを使用してサポートされています。これらの詳細についてはhereをご覧ください。

+0

私は、Daveがapplication.mobileとapplication.htmlの両方のレイアウトファイルを持つ必要性を避けようとしていると思いますか?あなたは他のものを含むことができますか? –

+0

その外観はこちら:http://stackoverflow.com/questions/339130/how-do-i-render-a-partial-of-a-different-format-in-rails –

+0

ありがとうStefaan。うん、ジョンは正しい。私はあなたの答えを理解しています - 私はshow.html.hamlとshow.mobile hamlを持っているなど、異なる意見セットを持っています。しかし、アプリケーションのレイアウトはapplication.mobile.hamlとapplication.html.hamlに複製されています。私はmobileと:htmlの両方の要求フォーマットに対して同じレイアウトを提供したいと思います。私はこの不正行為を考慮していない、ちょうどコードをDRYしたい。そして、私はすべてのフォーマットのために同じアプリケーションレイアウトをサーバーにしたくない:ちょうど:mobileと:web。 – buddhamagnet

関連する問題