rails构造函数“def initialize”with attributes:传递模型的正确方法

时间:2012-03-12 01:44:38

标签: ruby-on-rails ruby

您好我有一个名为“列表”的模型。 以下是模型的构造函数:

def initialize(business)
    puts 'inside Listing.initialize'

    @name = business.name
    @telephone = business.telephone


    puts 'Created a new Listing'
end

我有一个名为“listings_controller”的控制器 我有另一个名为“商业”的模型。在“listing_controller”中,我有一个方法,我希望用“业务”属性实例化一个“列表”。

以下是在“listings_controller”中执行该操作的代码

def create_listings

    self.get_all  
    @businesses.each do |business|
     Listing.create(business)

    end

end


def show

   self.create_listings
   @listings = Listing.all

   respond_to do |format|
   format.html #show.html.erb
   end

end

此初始化方法无法正常工作。我遇到此异常:

wrong number of arguments (2 for 1)

Rails.root:/ Users / AM / Documents / RailsWS / cmdLineWS / Business

应用程序跟踪|框架跟踪|完整追踪 app / models / listing.rb:53:在create_listings中的initialize' app/controllers/listings_controller.rb:18:in块中 app / controllers / listings_controller.rb:17:在each' app/controllers/listings_controller.rb:17:in create_listings'中 app / controllers / listings_controller.rb:26:在'show'

我该如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:4)

您可以尝试(伪代码/未经测试):

def initialize(business)
    puts 'inside Listing.initialize'

    @attributes.merge(business.attributes)

    puts 'Created a new Listing'

end