1. ホーム
  2. ruby-on-rails

[解決済み] Rails layouts per action?

2022-04-21 17:29:13

質問

一部のアクションで異なるレイアウトを使用しています(ほとんどのコントローラで新規アクションを使用しています)。

レイアウトを指定するのに最適な方法は何でしょうか?(同じコントローラで3つ以上の異なるレイアウトを使用しています。)

を使うのは好きではありません。

レンダー :レイアウト => '名前'

をするのが好きでした。

レイアウト 'name', :only => [:new].

しかし、それを使って2つ以上の異なるレイアウトを指定することはできないんだ。

例えば

同じコントローラで、異なるレイアウト名と異なるオプションで2回レイアウトを呼び出すと、最初のレイアウトは無視されます - これらのアクションは私が指定したレイアウトでは表示されません。

注:Rails 2を使用しています。

どのように解決するのですか?

レイアウトを設定するためのメソッドを使用することができます。

class MyController < ApplicationController
  layout :resolve_layout

  # ...

  private

  def resolve_layout
    case action_name
    when "new", "create"
      "some_layout"
    when "index"
      "other_layout"
    else
      "application"
    end
  end
end