当我尝试访问配置文件模型的location属性时出现错误。 它出现在以下代码行中,用于显示过滤搜索结果的链接:
<%= link_to_unless_current Profile.find_by_location(facet['term']).location, params.merge(location: facet['term']) %>
如果我改变:
Profile.find_by_location(facet['term']).location
为:
Profile.find_by_location(facet['term'])
错误消失,链接正确显示并过滤搜索结果,但格式为:
链接:/users?location=canada
而不只是链接:canada
为什么会发生这种情况?
答案 0 :(得分:1)
引发错误是因为可能存在查询
的情况Profile.find_by_location(facet['term'])
不返回任何结果(nil),您无法在nil实例上调用方法location
。
如果您不希望查询返回nil结果,请检查数据库的完整性。如果你期待它,那就处理它。
一种可能性是使用try作为快捷方式。
Profile.find_by_location(facet['term']).try(:location)
但它很快就会成为一种坏习惯,所以除非你知道自己在做什么,否则不要这样做。你应该处理用户输入。