我是從梁2升級到Rails3中,並在我的控制器代碼是這樣的佈局方法不叫Rails3中
class UserController < ApplicationController
layout :choose_layout
def choose_layout
return 'login' if action_name == 'login' or action_name == 'set_new_password'
return 'forgotpw' if action_name == 'forgot_password'
return 'dashboard' if action_name == 'dashboard'
'application'
end
def all
@users = User.active.all
end
end
上述佈局方法工作正常,在rails2,但它不是在Rails3中調用。我不知道爲什麼會發生這種情況,如果我在動作中寫這樣的代碼
class UserController < ApplicationController
def all
@users = User.active.all
render :layout => choose_layout
end
def choose_layout
layout_name ="application"
layout_name = 'login' if action_name == 'login' or action_name == 'set_new_password'
layout_name = 'forgotpw' if action_name == 'forgot_password'
layout_name = 'dashboard' if action_name == 'dashboard'
layout_name
end
end
然後佈局呈現完美。
誰能幫助我解決這個問題
你設置爲'ApplicationController'佈局?如果是這樣,請嘗試設置它來測試是否導致問題? – Nimir 2014-11-01 08:50:42
嗨感謝您的幫助,它不工作,我在應用程序控制器上寫它 – 2014-11-01 09:04:28
我的意思是檢查你的'application_controller'代碼,它是否有一個默認佈局'layout:somthing'?檢查http://apidock.com/rails/ActionController/Layout/ClassMethods/layout最後的評論在這種情況下提到了衝突! – Nimir 2014-11-01 14:38:43