Ruby on rails 未定义的方法`位置';零级:零级

Ruby on rails 未定义的方法`位置';零级:零级,ruby-on-rails,ruby,Ruby On Rails,Ruby,当我尝试访问概要文件模型的location属性时,会出现错误。 它出现在以下代码行中,该代码行显示过滤搜索结果的链接: <%= link_to_unless_current Profile.find_by_location(facet['term']).location, params.merge(location: facet['term']) %> 致: 错误消失,链接正确显示并过滤搜索结果,但其形式如下: 链接:/users?location=canada而不仅仅是链接:ca

当我尝试访问概要文件模型的location属性时,会出现错误。 它出现在以下代码行中,该代码行显示过滤搜索结果的链接:

<%= link_to_unless_current Profile.find_by_location(facet['term']).location, params.merge(location: facet['term']) %>
致:

错误消失,链接正确显示并过滤搜索结果,但其形式如下:

链接:
/users?location=canada
而不仅仅是链接:
canada


知道为什么会发生这种情况吗?

之所以会出现错误,可能是因为在某些情况下,查询

Profile.find_by_location(facet['term'])
不返回任何结果(nil),并且不能对nil实例调用方法
location

如果不希望查询返回nil结果,请检查数据库完整性。如果你期待它,那就处理它

一种可能是使用try作为快捷方式

Profile.find_by_location(facet['term']).try(:location)

但是它很快就会变成一个坏习惯,所以除非你知道自己在做什么,否则不要这样做。您应该处理用户输入。

在您的db(profiles表)中,您没有任何location=canada的配置文件(这是零问题)。对于链接问题,您有任何使用其中位置的路由路径吗?该配置文件有一个canada位置。我没有设置任何路由,因为链接只是过滤页面上的搜索结果。
Profile.find_by_location(facet['term'])
Profile.find_by_location(facet['term']).try(:location)