2012-10-10 103 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)表示您提供了兩個,但該方法只需要一個。只嘗試一個。