カテゴリー:
Rails
タグ:
 Rails layout

このエントリーをはてなブックマークに追加
更新日時:
2013年07月23日(火)
作成日時:
2013年06月15日(土)

前の記事 / 次の記事

詳しく調べてないから詳細は不明だけど、RailsのControllerで、

layout "application", :only   => :index
layout "navbar",      :except => :index
layout "form",        :only   => [:new, :edit, :create, :update]

みたいな書き方をしてはいけない。

こういう風に書いたらそれぞれの行がちゃんと動いてくれるかというと
そうではないっぽくて複数の layout 行があると適用されたりされなかったりする。

turbolinksとの相性が悪い??

参考:レイアウトファイルの指定方法いろいろ。

最も単純な解決としては、デフォルトのレイアウト以外のレイアウトを使う場合は
それぞれのアクション内でレイアウトを指定する。

def index
  render "index", :layout => "application"
end

また、layout シンボルを渡すことでブロックを使って条件を書くことが出来る。

layout :layout_select

def layout_select
  case action_name
  when :index
    "application"
  when :new, :edit, :create, :update
    "form"
  else 
    "navbar"
  end
end