0

モデルクラスがあります

class Location < ActiveRecord::Base
 belongs_to :post
 attr_accessor :address, :category,:name,:postcode,:tel

 def initialize(result)

   @address = result["address"]
   @category = result["category"]
 end
end

私のコントローラーでは、2つの方法で Location オブジェクトを作成しています

Location.new(result) #works fine
@post.location.new         #get error

2番目のケースでは、2つの引数を持つコンストラクターを探しているのはなぜですか. 2 つの引数を持つコンストラクターも追加しましたが、機能しませんでした。

エラーが発生します

wrong number of arguments (2 for 1)

編集: @post.location.new を機能させるにはどうすればよいですか?

4

2 に答える 2

2

コンストラクターを上書きして、Location引数を 1 つだけ取るようにしているため、new. あなたの最善の策は、おそらくそれをしないこと、または少なくとも次のようなデフォルトを提供することです。

def initialize(result = {})
   @address  = result["address"]
   @category = result["category"]
end

空の関連付けを作成するには、次を使用できます

@post.build_location

また

@post.location = Location.new
于 2012-10-10T17:16:22.540 に答える
0

はい、質問の最後の部分(2 for 1)は、2つ提供したことを意味しますが、この方法では1つしか使用できません。1つだけ試してください。

于 2012-10-10T17:00:42.147 に答える