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

在我的控制器中,我正在以两种方式创建 Location 对象

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

为什么在第二种情况下它寻找带有 2 个参数的构造函数。我还添加了带有两个参数的构造函数,但它不起作用。

我收到错误

wrong number of arguments (2 for 1)

编辑:我如何使@post.location.new 工作?

4

2 回答 2

2

您正在重写构造函数 forLocation以仅采用一个参数,因此现在您必须在每次调用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 )表示您提供了两个,但该方法只需要一个。只试一个。

于 2012-10-10T17:00:42.147 回答