我明白是什么原因导致错误的参数错误,但我的代码没有传递任何参数来初始化任何类,所以我不确定为什么我的代码给我这个错误。我也是Ruby on Rails的新手,所以这对事情没有帮助。我的代码如下:
def create_google_file
@products = Product.find(:all)
file = File.new('dir.xml','w')
doc = REXML::Document.new
root = REXML::Element.new "rss"
root.add_attribute("xmlns:g", "http://base.google.com/ns/1.0")
root.add_attribute("version", "2.0")
channel = REXML::Element.new "channel"
root.add_element channel
title = REXML::Element.new "title"
title.text = "Sample Google Base"
channel.add_element title
link = REXML::Element.new "link"
link.text = "http://base.google.com/base/"
channel.add_element link
description = REXML::Element.new "description"
description.text = "Information about products"
channel.add_element description
@products.each do |y|
item = channel.add_element("item")
id = item.add_element("g:id")
id.text = y.id
title = item.add_element("title")
title.text = y.title
description = item.add_element("description")
description.text = y.description
googlecategory = item.add_element("g:google_product_category")
googlecategory.text = y.googlecategory
producttype = item.add_element("g:product_type")
producttype.text = y.producttype
link = item.add_element("link")
link.text = y.link
imglink = item.add_element("g:image_link")
imglink.text = y.imglink
condition = item.add_element("condition")
condition.text = y.condition
availability = item.add_element("g:availability")
availability.text = y.availability
price = item.add_element("g:price")
price.text = y.price "USD"
gtin = item.add_element("g:gtin")
gtin.text = y.gtin
brand = item.add_element("g:brand")
brand.text = y.brand
mpn = item.add_element("g:mpn")
mpn.text = y.mpn
expirationdate = item.add_element("g:expiration_date")
expirationdate.text = y.salepricedate
end
doc.add_element root
file.puts doc
file.close
end
我得到的错误是: ProductsController#create_google_file
中的ArgumentError错误的参数数量(1表示0)
答案 0 :(得分:0)
应海报的要求,我正在回答我的意见:
完全基于其他行的一致性,但不知道哪一行实际上是失败的,可能是这部分:price.text = y.price "USD"
。 y.price
是一个接受参数的方法吗?是定义为def price(type)
还是其他什么?如果没有,如果它没有采取任何参数,那是因为你不应该向该方法发送任何参数。看起来它只是一个吸气剂。
@FranklinJosephMoormann我怀疑,这就是界限。你试图制作像“4.50美元”这样的字符串吗?然后你可能想要:price.text = "#{y.price} USD"
。这将取y.price
的结果并将其放在一个字符串中,并允许您在字符串中继续输入更多内容。它被称为字符串插值。