デフォルトでは、Railsのビューはで提供されているテンプレートを使用することを知っていますapplication.html.erb
。ただし、で提供されているテンプレートを使用したくないビューが1つありapplication.html.erb
ますが、そのビュー自体にすべてのHTMLを記述します。それは可能ですか?
5 に答える
コントローラアクションの最後に、以下を追加します。
render :layout => false
特定のアクションの場合:
class SomeController < ApplicationController
def my_custom_action
render layout: false
end
end
カスタムレイアウトを使用して同じことを実現できます。
例:WelcomeController
で名前を付けたカスタムレイアウトファイルを作成し
welcome.html.erb
ますapp/views/layout/
。そこにレイアウトコードを記述します(忘れないでくださいyield
)。Convention over Configuration
RailsがにマップされたビューをレンダリングするときのRails機能によりWelcomeController
、デフォルトのレイアウトwelcome.html.erb
が上書きされます。application.html.erb
カスタムレイアウトファイルに別の名前を付けたい場合。Railsではそれも可能です。レイアウトファイルに。という名前を付けます
mylayout.html.erb
。にWelcomeController
、次のコードを追加しますクラスWelcomeController<ApplicationController
レイアウト'mylayout'
...。
終わり
特定のアクションのみのカスタムレイアウトが必要な場合は、アクションの最後の行に次のように記述します
render layout: 'mylayout'
確かに、あなたの行動では次のようなことをしてください:
def action
render :layout => false
end
これは、レイアウトを必要とする他のアクションがコントローラーにあることを前提としています。layout false
それ以外の場合は、コントローラールートで指定します。
レイアウトを必要としない複数のアクションがある場合は、できると思います
layout false, :only => [ :action1, :action2 ]
コントローラがApplicationControllerから継承していることを確認する必要があります
class MyCustomController < ApplicationController