2012-10-10 82 views
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.new(result) #works fine 
@post.location.new   #get error 

创建Location对象为什么在第二种情况下其寻找的构造有2个参数。我也添加了两个参数的构造函数,但它没有奏效。

我得到错误

wrong number of arguments (2 for 1) 

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

+0

它正在寻找一个参数,而不是两个。你只给了一个,然后两个。 “x for y”的意思是“实际上有x是预期的y”。 – sawa

+0

@ post.location.new没有任何参数..我只想要一个空对象。 – harshit

+0

当你不提供参数时,你想要什么值? – sawa

回答

2

您正在覆盖Location的构造函数以接收一个参数,因此现在您必须提供每个调用new。你最好的选择可能是不这样做,或至少提供一个默认的,是这样的:

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

要建一个空的关联,然后你可以使用

@post.build_location 

@post.location = Location.new 
0

是的,对于问题的最后部分,(2代表1)表示您提供了两个,但该方法只需要一个。只尝试一个。