非常に特殊なケースで助けが必要です。
特定のビューのレイアウト動作をオーバーライドしたいと考えています。何をすべきかを説明しているRhodesのドキュメントを見つけました。(Rhodes のドキュメントのコピーがこのテキストの最後に貼り付けられています)
2 番目の方法 (「コントローラーでレイアウト メソッドを呼び出して、デフォルトのレイアウト名を上書きする」) を使用しようとしましたが、うまくいきませんでした。コントローラーのコーディング方法を誤解している可能性があるか、できれば構文エラーのみが発生している可能性があると思います... アプリケーションの詳細については、以下を参照してください。
どうすればいいのか教えてください。正しい構文は何ですか? または、別の方法を使用する必要がありますか?
前もって感謝します。
ルイ・デシェーヌ
アプリケーションと私が行ったことに関するいくつかの情報を次に示します。
- 簡単なアプリケーション
- ビルドはiPhone用です
- 「電卓」ビューでアプリ起動
- 「電卓」ビューの呼び出し 「ヘルプ」ビューを呼び出す「コントロール」ビュー
アプリの構造:
app/ -> index.erb (Control view) -> layout.erb (Standard layout) -> calculatorlayout.erb (Customize layout for Calculator view) -> calculator/ -----> index.erb (Calculator view) -----> calculator_controller.erb (Controller to be able to override layout) -> help/ -----> index.erb (Help view)
Calculator_controller.erb を作成しました
require 'rho/rhocontroller' require 'helpers/browser_helper' class CalculatorController < Rho::RhoController include BrowserHelper layout :calculatorlayout (Thats what Rhodes doc mentionned to do)
私が言ったように、これはうまくいきません。正しいやり方を教えてください。
注: 一時的な措置として、app/calculatorlayout.erb を app/calculator/layout.erb にコピーしました。これにより、アプリが「Caculator」ビューで起動したときにレンダリングが行われますが、「About」ビューに移動して戻ると、 「電卓」ビューへ 電卓のレンダリングは標準レイアウトで行われます。
--------ロードスのドキュメント---------------------------------------- ----
レイアウトの動作をオーバーライドまたはカスタマイズする場合は、次のパラメーターを使用してレンダリング関数を呼び出すことができます。
render :action => 'index', :layout => 'mycustomlayout', :use_layout_on_ajax => false
最初の引数は、レンダリングしたいアクションです。次は (オプションの) レイアウト名で、アプリケーション ルートをベース ディレクトリと見なします。上記の例では、Rhodes はアプリケーションのルート ディレクトリで「mycustomlayout.erb」というファイルを探します (レイアウト テンプレートの使用を無効にするために :layout => false を使用することもできます)。use_layout_on_ajax 引数は、Ajax 呼び出しでレイアウトを使用するかどうかを Rhodes に伝えます (デフォルトは false)。
コントローラでレイアウト メソッドを呼び出して、デフォルトのレイアウト名を上書きできます。
レイアウト:mycustomlayout
これにより、レンダー呼び出しで、このコントローラーのすべてのアクションのデフォルト レイアウト ファイルの代わりに mycustomlayout.erb を使用するようになります。