1

このコードを使用してリンクを取得し、3つのデータベースエントリをテーブルのリンクとして表示した後、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

に属性(etc ...)があり、ないことを確認し@companyてください(文字列であることが期待されています)。office_adress_streetnil@company.office_adress_street

おそらくタイプミスがありますか?adressまたはaddress

属性@companyがない場合がある場合は、link_to_ifヘルパーを使用します。office_adress_street

<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 に答える