私はレールのチュートリアルを行ってきました。コントローラがビューをレンダリングするときに何が起こるのかを理解しようとしています。この議論のためのモデルを別に設定すると、コントローラがsome_viewの作業を行い、some_viewに帰着するレイアウトが標準のapplication.html.erbレイアウトですが、実際にここで何が起こっていますか?コントローラはビューを呼び出し、何らかの形でビューがレイアウトを呼び出し、レイアウトがビューに表示されますか?または、コントローラーが適切なレイアウトを探して、レイアウトがインテリジェントにビューに表示されますか?どういうわけか、コントローラー内のアクションと適切なビューとレイアウトがペアになりますが、アクションの実際の連鎖が何であるかはわかりません。チキン/卵:レールはビューのレイアウトを、レイアウトのビューを呼び出しますか?
答えて
ビューはコントローラから呼び出されます。したがって、posts_controller indexアクションは、コントローラと同じ名前のviewsフォルダを探し、action ... app/views/posts/index.html.erbと同じ名前のテンプレートを探します。これはあなたがすでに知っている
同様に、デフォルトではapp/views/layoutsフォルダ内でコントローラと同じ名前のレイアウトを探します。この場合、app/views/layouts/posts.html.erbが検索されます。この名前でファイルが見つからない場合は、デフォルトのレイアウトテンプレートとしてapp/views/layouts/application.html.erbがデフォルトになります。
Railsの魔法は、インデックステンプレートが<%= yield%>領域に入るように2つを組み合わせます。
これは私の質問に答えるので、ありがとう。ビューがレイアウトを呼び出すように見えていたように見えましたが、レイアウトがビューに表示されます。ここではRailsの魔法があると受け入れますが、あなたが記述した決定木は決定的に意味があり、それは有用なことです。 – AuroraTertius
あなたが本当にタマネギをはがしたい場合は、Railsのソースコードを直接見てください。 Railsは実際には11種類のRuby宝石の集合体です。レイアウトはAction_View宝石の一部です。 github https://github.com/rails/rails/blob/master/actionview/lib/action_view/layouts.rbの詳細を見ることができます –
- 1. するビューのレイアウト
- 2. ビュー内のビューを自動レイアウトする
- 3. レイアウトをビューにレイアウトに追加
- 4. メソッドがレイアウトまたはビューを返す
- 5. AndroidのビューをReparent - あるレイアウトから別のレイアウトに移動
- 6. ビューとレイアウトvs setGravity
- 7. リサイズ後のビューのレイアウト
- 8. ビューとレイアウトのメタデータ/要素
- 9. レイアウトとビューの管理
- 10. Kivy:ビューとレイアウトの違い
- 11. Androidデータバインディング:ビューへのレイアウト
- 12. ビューを親レイアウトの外に少し出す方法はありますか?
- 13. ビューの呼び出し後に関数を呼び出す
- 14. ビューからレイアウトを取得する
- 15. 自動レイアウトと画像ビュー/ビュー
- 16. ビューサブクラスのビューとしてXMLレイアウトを使用しますか?
- 17. 1つのビューの自動レイアウトをオプトアウトしますか?
- 18. sapui5のXMLビューからHTMLビューを呼び出す方法
- 19. 別のビューからビューを呼び出す
- 20. 別のビューからビュー関数を呼び出す - バックボーン
- 21. ビューのレイアウトを変更する -
- 22. アンドロイドのビューでレイアウトを固定する
- 23. ビューからのレイアウト変数の設定
- 24. このビュー(レイアウト)の作成方法は?
- 25. パラメータを持つ別のビュー内のビューを呼び出す
- 26. 子ビューからのバックボーン呼び出し/参照親ビュー
- 27. Railsはビューから外部APIを呼び出しますか?
- 28. iOS:ビューからMainWindowのメソッドを呼び出しますか?
- 29. クラスからビューのメソッドプロパティを呼び出しますか?
- 30. Codeigniter:ビューからメソッドを呼び出す
あなたはこれまでに読んだことがありますか?http://guides.rubyonrails.org/layouts_and_rendering.html – Iceman
はい、私は私が探しているイベントの連鎖の簡潔な説明を見落としているかもしれません。 – AuroraTertius
私は次のようなものを探していると思います。「Railsは同じ名前のビューを探し、ビューの特定のレイアウトが存在しない場合は標準レイアウトを呼び出し、レイアウトはビューに表示されます。これは起こっているようですが、実際には、それが再生されているビューのレイアウトルックアップであるかどうかを判断できません。 – AuroraTertius