6

デフォルトでは、Railsのビューはで提供されているテンプレートを使用することを知っていますapplication.html.erb。ただし、で提供されているテンプレートを使用したくないビューが1つありapplication.html.erbますが、そのビュー自体にすべてのHTMLを記述します。それは可能ですか?

4

5 に答える 5

9

コントローラアクションの最後に、以下を追加します。

render :layout => false
于 2012-10-24T22:27:47.677 に答える
4

特定のアクションの場合:

class SomeController < ApplicationController
  def my_custom_action
    render layout: false
  end
end
于 2012-10-24T22:28:03.447 に答える
2

カスタムレイアウトを使用して同じことを実現できます。

例:WelcomeController

  1. で名前を付けたカスタムレイアウトファイルを作成しwelcome.html.erbますapp/views/layout/。そこにレイアウトコードを記述します(忘れないでくださいyield)。Convention over ConfigurationRailsがにマップされたビューをレンダリングするときのRails機能によりWelcomeController、デフォルトのレイアウトwelcome.html.erbが上書きされます。application.html.erb

  2. カスタムレイアウトファイルに別の名前を付けたい場合。Railsではそれも可能です。レイアウトファイルに。という名前を付けますmylayout.html.erb。にWelcomeController、次のコードを追加します

    クラスWelcomeController<ApplicationController

    レイアウト'mylayout'

    ...。

    終わり

  3. 特定のアクションのみのカスタムレイアウトが必要な場合は、アクションの最後の行に次のように記述しますrender layout: 'mylayout'

于 2014-01-24T22:03:20.987 に答える
1

確かに、あなたの行動では次のようなことをしてください:

def action
  render :layout => false
end

これは、レイアウトを必要とする他のアクションがコントローラーにあることを前提としています。layout falseそれ以外の場合は、コントローラールートで指定します。

レイアウトを必要としない複数のアクションがある場合は、できると思います

layout false, :only => [ :action1, :action2 ]
于 2012-10-24T22:30:05.270 に答える
0

コントローラがApplicationControllerから継承していることを確認する必要があります

class MyCustomController < ApplicationController
于 2018-09-14T18:42:20.150 に答える