Установка другого шаблона Rails, если пользователь вошел в систему - PullRequest
0 голосов
/ 22 декабря 2010

Я пытаюсь установить макет как "приватный", когда пользователь вошел в систему. Было бы идеально, если бы я мог сделать что-то вроде:

layout 'private' if current_user

Кроме того, что выдает эту ошибку:

undefined local variable or method `current_user' for ApplicationController:Class

Я также пытался сделать это в контроллере приложения:

before_filter :pick_the_layout

def pick_the_layout
  if current_user
    render :layout => "private"
  else
    render :layout => "public"
  end
end

Тоже не везет, что имеет смысл. Кто-нибудь может придумать лучший способ сделать это?

Ответы [ 2 ]

12 голосов
/ 22 декабря 2010

Вы можете сделать это так:

layout :determine_layout

private
  def determine_layout
    current_user ? "private" : "public"
  end

Очевидно, это зависит от current_user, являющегося nil или false, если пользователь не вошел в систему.

Высм. документацию по использованию layout здесь:

http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout

и другие примеры:

http://api.rubyonrails.org/classes/AbstractController/Layouts.html

0 голосов
/ 22 декабря 2010

Хм ... может быть layout 'private' if defined?(current_user)

...