我在堆栈溢出时查看了这些帖子: 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
的任何地方。
当我创建字段时,一切正常,我只是介绍了尚未为组创建导航栏链接的用例。
答案 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是零。