2011-04-27 31 views
1

我無法弄清楚這個極其簡單的錯誤:錯誤的參數數目 - 在初始化方法

xyz_controller.rb: 
    @isbn = params[:q] 
    @search_type = params[:search_type] 
... 
    @prices = Generalsearch.new(:search_term => @isbn, :search_type => @search_type) 

generalsearch.rb 

    attr_accessor :search_term , :search_type 
    def initialize(search_term , search_type) 
     self.search_term= search_term 
     self.search_type= search_type 
    end 
... 

我不斷收到

wrong number of arguments (1 for 2) 
app/models/generalsearch.rb:11:in `initialize' 
app/controllers/book_controller.rb:47:in `new' 
app/controllers/book_controller.rb:47:in `view' 

回答

7

你逝去的只有一個參數,即哈希:search_term => @isbn, :search_type => @search_type在Generalsearch.new()

使用

Generalsearch.new(@isbn, @search_type) 
4

你必須使用,因爲你要接受2初始化函數params,而不是params的散列。

@prices = Generalsearch.new(@isbn, @search_type) 
0

如果你想使用

Generalsearch.new(:search_term => @isbn, :search_type => @search_type) 

然後你就可以有在initialize方法

def initialize(options) 
    # You can also use options[:search_term], 
    # but fetch lets you know if the key doesn't exist 
    self.search_term= options.fetch(:search_term) 
    self.search_type= options.fetch(:search_type) 
end