简体   繁体   English

红宝石中未定义的方法错误NoMethodError

[英]undefined method error in ruby NoMethodError

The following code returns an error and I dont know why: 以下代码返回错误,但我不知道为什么:

require "rexml/document"
include REXML

file = File.new("test.xml")
doc = REXML::Document.new file

 class Registration
     attr_accessor :number, :jurisdiction, :physicallyPresentInRegistrationCountry
 end 

 def constructRegistration(item, typeOfMerchant)
    reg = Registration.new
    element = item.elements[typeOfMerchant + "PhysicallyPresentInRegistrationCountry"]
    if element != nil then
        reg,physicallyPresentInRegistrationCountry = element.text
    else
        reg.physicallyPresentInRegistrationCountry = nil
    end 
    return reg
  end

  XPath.each(doc, "//transactionAuditRecordList/item") { |item|
     reg = constructRegistration(item, "seller")
     puts reg.physicallyPresentInRegistrationCountry    
  }  

rexml.rb:26: undefined method `physicallyPresentInRegistrationCountry' for "false":String (NoMethodError) rexml.rb:26:未定义的方法“ physicallyPresentInRegistrationCountry”为“ false”:字符串(NoMethodError)

    from /usr/lib/ruby/1.8/rexml/xpath.rb:53:in `each'

    from /usr/lib/ruby/1.8/rexml/xpath.rb:53:in `each'

    from rexml.rb:24

Looks like a stray comma instead of a dot: 看起来像是一个逗号,而不是一个点:

if element != nil then
    reg,physicallyPresentInRegistrationCountry = element.text
#----^^^^

This has the effect of doing a multi-assignment to two vars reg and physicallyPresentInRegistrationCountry but only one expression on the right side of = means that 这具有对两个vars regphysicallyPresentInRegistrationCountry进行多重分配的效果,但是=右侧的一个表达式表示

reg = element.text
physicallyPresentInRegistrationCountry = nil

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM