1

モデル:

class Car < ActiveRecord::Base
  ...
  belongs_to :manufacturer
  ...
end


class Manufacturer < ActiveRecord::Base
  ...
  has_many :cars
  ...
end

車のコントローラー:

  def index
     @title = "All cars"
     @cars = Car.paginate(:page => params[:page], :per_page => 20)
  end

意見:

<%= car.manufacturer.name %>

表示:nil:NilClassの未定義のメソッド `name'

Ok。意見:

<%= car.manufacturer[name] %>

表示:#<#:0x460c488>の未定義のローカル変数またはメソッド `name'

しかし!意見:

<%= car.manufacturer.to_yaml %>

ショー:

--- !ruby/object:Manufacturer
attributes:
  id: 1
  name: Acura
  created_at: 2011-11-30 09:59:19.750976000 Z
  updated_at: 2011-12-06 10:38:46.569531000 Z

では、どうすればCar.manufacturerの名前を読み取ることができますか?

4

2 に答える 2

2

<%= car.manufacturer.name if car.manufacturer %>一部の結果には属性が設定されていないため、これにより、属性ゲッターメソッドが設定されている場合にのみ呼び出すことができます。

于 2012-04-17T13:24:30.877 に答える
1
<%= car.manufacturer.try(:name) %>

そして、あなたはプレゼンターパターンに興味があるかもしれません

于 2012-04-17T14:32:41.467 に答える