在--ApplicationController中确定所请求的Controller

时间:2011-06-17 22:21:17

标签: ruby-on-rails ruby-on-rails-3

在我的ApplicationController中我想做这样的事情:

  def layout_by_resource
    if user_signed_in? || request.controller == 'ChatRoom'
      "application"
    else
      "unauthorized"
    end
   end

request.controller =='ChatRoom'部分可能吗?我想根据用户调用的控制器提供特定的布局。

由于

3 个答案:

答案 0 :(得分:4)

当然,您只需将request.controller == 'ChatRoom'替换为params[:controller] == 'ChatRoom'

即可

替代解决方案:

request.filtered_parameters["controller"] == 'ChatRoom'

答案 1 :(得分:1)

我认为您可以在控制器级别执行此操作。

def chatroom
  render(:layout => "layouts/application")
end

答案 2 :(得分:1)

的ApplicationController:

layout :layout_by_resource

def layout_by_resource
    if user_signed_in? || params[:controller] == 'chat_room'
      "application"
    else
      "unauthorized"
    end
end