13

Ember アプリケーションの active_model_serializer でデータをサイドロードしようとしていますが、オブジェクトを含めようとすると NoMethodError が発生します。

#Email:0x00000100d33d20 の未定義のメソッド「オブジェクト」

次のように :include => true が設定されている場合にのみ発生します。

class ContactSerializer < ActiveModel::Serializer
  embed :ids, :include => true
  attributes :first_name, :last_name
  has_many :emails
end

私のモデルは次のようになります。

class Contact < ActiveRecord::Base
  attr_accessible :first_name, :last_name, :company,
  belongs_to :account
  belongs_to :user
  has_many :emails
end

class Email < ActiveRecord::Base
  attr_accessible :email_address, :email_type_id, :is_primary  
  belongs_to :contact
end

私のコントローラーは次のようになります。

def show
  @contact = @current_user.contacts.where(:id => params[:id]).includes(:emails).first
  render :json => @contact
end

前もって感謝します。

4

1 に答える 1

26

Deefour が上で述べたように、サイドロードされたオブジェクトのシリアライザーがあることを確認してください。この場合、EmailSerializer を作成します。

class EmailSerializer < ActiveModel::Serializer
  attributes :id, :email_address
end
于 2013-01-02T01:28:58.733 に答える