Rails 3 - .Nil?重定向无法正常工作

时间:2011-06-15 20:24:43

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

把头发拉出来:

我正在尝试一个简单的“重定向到家,如果没有会话电子邮件变量”,当我测试会话变量是nil时说它不是,那么代码就会在下一个语句中出现抱怨它的nil

以下是代码:

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

所以我在会话不存在且@usernil时运行它,因为db当然没有用户使用nil电子邮件地址。但是,当session[:email]nil时,为什么不重定向呢?顺便说一句,我试过存在吗?并且空白?并且== nil== ""无效

任何帮助将不胜感激。觉得我错过了一些明显的东西。

谢谢,克里斯

3 个答案:

答案 0 :(得分:2)

试试redirect_to root_url and return unless session[:email]and return应该可以解决问题。

正如Alex在评论中所说,redirect_to(和render就此而言)只是方法调用,因此不会将控制权返回给调用对象。

答案 1 :(得分:0)

您是否尝试将其拉到单独的变量中?这段代码适用于rails3:

abc = session[:abc]
if !abc.blank?
logger.info "blank"
else
logger.info "not"
end

答案 2 :(得分:0)

你可以尝试类似的东西

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

告诉我是否有诀窍。