レイアウト
レイアウトの指定
class AbcController < ApplicationController layout "xyz" # <--レイアウトの名前 layout :determine_layout # <--レイアウトの名前を返すインスタンスメソッド def xxx # レイアウトの名前は、app/views をルートとして考える render :layout => "layouts/xyz" end private def determine_layout "xyz" end end
レイアウトのキャンセル
class AbcController < ApplicationController def xxx render :layout => false end end
render と render_component
render :action => "demo"
↑ demoアクションで使うテンプレートをレンダリングするが、demoメソッドは実行されない。
render_compoent :action => "demo"
↑ demoアクションが実際に実行される。demoメソッドは実行される。
レスポンスは生成されるので、render_componentのあとにrenderを行うと、DoubleRenderError。
render_component_as_stringはレスポンスを生成しないで、結果を文字列で返す。