Рельсы 3 - .Нил?Перенаправление не работает - PullRequest
1 голос
/ 16 июня 2011

Потянув свои волосы на этом:

Я пытаюсь просто «перенаправить на дом, если нет переменной сеанса электронной почты», и когда я проверяю, чтобы переменная сеанса была nil, это говорит, что это не't, то код выкладывается в следующем утверждении с жалобой на то, что его nil.

Вот код:

def index
  if session[:email].nil?
    redirect_to root_url
  end       
  @user = User.find(:first, :conditions => "email = '"+session[:email]+"'")
end

Итак, я запускаю это, когда сеанс не существует, а @user равен nil, поскольку, конечно, в БД нет пользователя с нулемадрес электронной почты.Но почему он не перенаправляет, когда session[:email] равен nil ?.Кстати, я пробовал существует?а пустой?и == nil и == "" безрезультатно

Любая помощь будет принята с благодарностью.Чувствую, что я упускаю что-то очевидное.

Спасибо, Крис

Ответы [ 3 ]

2 голосов
/ 16 июня 2011

Попробуйте redirect_to root_url and return unless session[:email].and return должен сделать свое дело.

Как сказал Алекс в комментарии, redirect_torender, в этом отношении) являются просто вызовами методов и, как таковые, не возвращают управление вызывающему объекту..

0 голосов
/ 16 июня 2011

Вы можете попробовать что-то в этом роде

def index
  @user = User.find(:first, :conditions => "email = '"+session[:email]+"'")
rescue ActiveRecord::RecordNotFound
  redirect_to root_url
end

Скажите, сработало ли это.

0 голосов
/ 16 июня 2011

Вы пытались перенести его в отдельную переменную. Этот код работает для меня в rails3:

abc = session[:abc]
if !abc.blank?
logger.info "blank"
else
logger.info "not"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...