2
爲什麼會導致:顯示根本沒有佈局:layout'admin',:except = > [:show]這是什麼原因導致:顯示根本沒有佈局:佈局'admin',:except => [:show]
這是預期的行爲?我不得不在一個空白的def show結尾處放置一個render:layout =>'application'。
不應該將show動作默認爲基本佈局?
爲什麼會導致:顯示根本沒有佈局:layout'admin',:except = > [:show]這是什麼原因導致:顯示根本沒有佈局:佈局'admin',:except => [:show]
這是預期的行爲?我不得不在一個空白的def show結尾處放置一個render:layout =>'application'。
不應該將show動作默認爲基本佈局?
這實際上讓我很吃驚,我不得不去源碼檢查。答案是否定的,它確實/不應該默認爲應用程序佈局。通過的條件反而被用來確定動作是否具有佈局在所有,因此混合方法action_has_layout?(Rails 3)的名稱。
我有一半希望它的行爲像respond_to
,你可以多次調用以建立不同行爲的條件。
在任何情況下,您都可以通過發送一個包含您的邏輯(通過proc或符號引用方法)的方法來輕鬆處理此問題,而不是僅僅爲了呈現不同的佈局而定義空行爲。
例如:
layout :determine_layout
...
def determine_layout
# show gets application, the rest get admin
params[:action] == 'show' ? 'application' : 'admin'
# or, returning true would probably do it (and be more flexible in case
# the rest of your app swapped layouts to something other than application)
params[:action] == 'show' || 'admin'
end
我來到這個相同的結論。我覺得這個行爲有點反直覺。感謝您的時間和幫助。 – pixelearth