检查轨道中的字段是否为空白

时间:2013-07-01 22:30:50

标签: ruby-on-rails activerecord

我在堆栈溢出时查看了这些帖子: A concise explanation of nil v. empty v. blank in Ruby on Rails Rails: How do I check if a column has a value?

我尝试了一些不同的方法来检查记录的存在,但我的代码仍然是一个错误:

undefined method `links' for nil:NilClass

我有这是application_controller:

def header_links_when_signedin
  if signed_in? 
    @header = @current_group.navbars.where(:header => true, :signedin => true).first
    unless @header.links.first.blank?
      @header.links
    end
  end
end

我在这一行得到错误:

unless @header.links.first.blank?

或者当我之前没有为我正在呼叫的导航栏创建链接时,我包含links的任何地方。

当我创建字段时,一切正常,我只是介绍了尚未为组创建导航栏链接的用例。

2 个答案:

答案 0 :(得分:3)

问题是@header为零(未找到标题)。为避免错误,请尝试:

if @header && @header.links
  @header.links
end

在此验证@header@header.links“存在”。顺便问一下,你想用你的实例变量@header做什么?因为@header.links没有做任何事情。

答案 1 :(得分:1)

更好:

@header.try(:links)

在调用“链接”之前,这将自动检查@header是否为nil。

如果你真的在乎你可以做到:

@header.try(:links) unless @header.try(:links).try(:empty?)

但你应该弄明白为什么@header是零。