layout ファイルについて・その3【細かいオプションとか】
前回の例を使って更に詳しいオプションなどを説明します。
デフォルトでは、controller の名前そのままのレイアウトファイルを持ってきます。でもでも違う名前のレイアウトファイルを持ってきたい場合は、controller に layout "[レイアウトファイル名]" と指定します。
app/controllers/galileo_controller.rb ファイルでいうと、
これで、app/views/layouts/galileo.rhtml ファイルではなく、app/views/layouts/galileo2.rhtml ファイルを使用するようになります。
今はダブルクォーテーションで galileo2 をくくって、String 扱いにしましたが、これをシンボル扱いにすると、このシンボルと同じ名前のメソッドの戻り値と同じレイアウトファイルを読み込みなさい、というややこしいことになります。
あと、このメソッドだけにレイアウトを使いたいとか、このメソッドだけにはレイアウトを使いたくないとかの指定ができます。
もうちょっとだけいろいろ出来るみたいですので、気になる方は、こちらをどうぞ。
【広告】
デフォルトでは、controller の名前そのままのレイアウトファイルを持ってきます。でもでも違う名前のレイアウトファイルを持ってきたい場合は、controller に layout "[レイアウトファイル名]" と指定します。
app/controllers/galileo_controller.rb ファイルでいうと、
class GalileoController < ApplicationController
layout "galileo2"
def intro
end
end
これで、app/views/layouts/galileo.rhtml ファイルではなく、app/views/layouts/galileo2.rhtml ファイルを使用するようになります。
今はダブルクォーテーションで galileo2 をくくって、String 扱いにしましたが、これをシンボル扱いにすると、このシンボルと同じ名前のメソッドの戻り値と同じレイアウトファイルを読み込みなさい、というややこしいことになります。
class GalileoController < ApplicationController
layout :which_galileo
def intro
end
private
def which_galileo
param[:honyarara].blank? ? "galileo" : "galileo2"
end
end
あと、このメソッドだけにレイアウトを使いたいとか、このメソッドだけにはレイアウトを使いたくないとかの指定ができます。
class GalileoController < ApplicationController
layout "galileo2", :only => :intro1 #intro1 にだけレイアウトを使う
def intro1
end
def intro2
end
def intro3
end
end
class GalileoController < ApplicationController
layout "galileo2", :except => :intro1 #intro1 にだけレイアウトを使わない
def intro1
end
def intro2
end
def intro3
end
end
もうちょっとだけいろいろ出来るみたいですので、気になる方は、こちらをどうぞ。
【広告】