0

引数の数が間違っているエラーの原因は理解していますが、私のコードはクラスを初期化するためのパラメーターを渡していないため、コードでこのエラーが発生する理由がまったくわかりません。私は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

引数の数が間違っています (0 に対して 1)

4

1 に答える 1

0

ポスターのリクエストに応じて、コメントを回答に入れています。

純粋に他の行の一貫性に基づいていますが、どの行が実際に失敗しているかを知らずに、この部分である可能性があります: price.text = y.price "USD". y.priceパラメータを受け取るメソッドですか?def price(type)または何かとして定義されていますか?そうでない場合、パラメーターを取らない場合は、そのメソッドにパラメーターを送信する必要がないためです。ただのゲッターのようです。

@FranklinJosephMoormann私が疑ったように、それがその行です。「4.50 USD」のような文字列を作成しようとしていましたか? それからあなたはおそらく望んでいた:price.text = "#{y.price} USD". これにより、結果が取得y.priceされて文字列に入れられ、文字列にさらに入力し続けることができます。これは文字列補間と呼ばれます。

于 2012-12-21T16:00:40.310 に答える