1

在使用此代码获取我的链接以向我显示 3 个数据库条目作为表中的链接后,我得到未定义的方法 `+' for nil:NilClass 错误对于没有这些字段的公司,此错误。

<td><%= link_to  @company.office_adress_street + ", " + @company.office_adress_city + ", " + @company.office_adress_postcode, "http://maps.google.com/?q=" + @company.office_adress_street + ", " + @company.office_adress_city + ", " + @company.office_adress_postcode, :target => '_blank' %></td>
4

3 回答 3

4

您应该检查每个对 @company.XXX 属性的调用都不会返回 nil,更好的是字符串连接的结构应该如下:

"#{link_to(@company.office_adress_street)}, #{@company.office_adress_city}, #{@company.office_adress_postcode}"
于 2012-04-09T11:40:33.007 回答
3

我建议您向模型(或装饰器)添加一个方法

def address
  [office_address_street, office_address_city, office_address_postcode].compact.join(', ')
end

那么在你看来:

<td><%= link_to  @company.address, "http://maps.google.com/?q=" + @company.address, :target => '_blank' %></td>

如果您决定使用装饰器,您还可以创建一个link_to_address返回链接的方法,然后将视图简化为:

<td><%= @company.link_to_address %></td>
于 2012-04-09T14:37:49.873 回答
1

确保它@company有一个office_adress_street属性(等等......)并且它不是nil(它@company.office_adress_street应该是一个字符串)。

也许有一个错字?adress还是address

如果打算@company有时没有office_adress_street属性,请使用link_to_if帮助器:

<td><%= link_to_if @company.office_adress_street, @company.office_adress_street + ", " + @company.office_adress_city + ", " + @company.office_adress_postcode, "http://maps.google.com/?q=" + @company.office_adress_street + ", " + @company.office_adress_city + ", " + @company.office_adress_postcode, :target => '_blank' %></td>

于 2012-04-09T11:41:47.217 回答