我是从梁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