如何遍历这个Ruby对象?
我正在使用,我做到了:如何遍历这个Ruby对象?,ruby,nokogiri,Ruby,Nokogiri,我正在使用,我做到了: @output = document.xpath('//li/a') 产生这一产出的原因是: > #<GrabFeedFromJSE:0x00007fe7098bb648 @titles=NodeSet(Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/jse-index")] children: NodeSet(Text("\n\n
@output = document.xpath('//li/a')
产生这一产出的原因是:
> #<GrabFeedFromJSE:0x00007fe7098bb648 @titles=NodeSet(Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/jse-index")] children: NodeSet(Text("\n\n \n\n\n JSE Index \n \n "), Element(name: "br"), Text("\n\n 4,614,305 Vol\n "), Element(name: "br"), Text("\n\n 299,175.87 \n "), Element(name: "img" attributes: [Attribute(name: "style" value: "height:16px"), Attribute(name: "src" value: "/img/down.png")]), Text("\n\n \n -541.06\n "))), Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/all-jamaican")] children: NodeSet(Text("\n\n \n\n\n JSE All Jamaican Composite Index \n \n "), Element(name: "br"), Text("\n\n 3,911,832 Vol\n "), Element(name: "br"), Text("\n\n 328,363.09 \n "), Element(name: "img" attributes: [Attribute(name: "style" value: "height:16px"), Attribute(name: "src" value: "/img/down.png")]), Text("\n\n \n -593.84\n "))), Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/jse-select")] children: NodeSet(Text("\n\n \n\n\n JSE Select Index \n \n "), Element(name: "br"), Text("\n\n 3,036,580 Vol\n "),
#您的输出告诉您有一个GrabFeedFromJSE
的实例:
等等
注意:您使用的是完全不同的XML处理器,因此使用Nokogiri的文档对您毫无帮助。你需要看看Oga的文件。但是,您正在处理的对象不是Oga对象,而是GrebFeedFromJSE
对象。您应该查找它的文档,或者如果它没有文档,请联系它的作者。您的输出告诉您有一个GrabFeedFromJSE
的实例:
等等
注意:您使用的是完全不同的XML处理器,因此使用Nokogiri的文档对您毫无帮助。你需要看看Oga的文件。但是,您正在处理的对象不是Oga对象,而是GrebFeedFromJSE
对象。您应该查找其文档,如果没有文档,请联系其作者。示例代码中没有任何内容分配给@output
;这就是你的行为<代码>标题
的行为类似于数组,您可以使用标准方法枚举它。请尝试标题[0]。例如,路径。@Phlip还有更多的代码,但为了优先起见,请假定它已正确分配。我已经更新了问题以使其更准确。@Phlip我也尝试了你的建议,但没有成功:@output[0]。路径命名错误:未定义的方法“[]”用于#
示例代码中没有任何内容分配给@output
;这就是你的行为<代码>标题
的行为类似于数组,您可以使用标准方法枚举它。请尝试标题[0]。例如,路径。@Phlip还有更多的代码,但为了优先起见,请假定它已正确分配。我已经更新了问题以使其更准确。@Phlip我也尝试了你的建议,但没有成功:@output[0]。路径命名错误:未定义的方法“[]”,用于
我是GrabFeedFromJSE
类的作者,但该类所做的只是返回以下结果:@output=document.xpath(“//li/a”)
从技术上讲,它是一个Oga对象。我是GrabFeedFromJSE
类的作者,但该类所做的只是返回以下结果:@output=document.xpath('//li/a')
从技术上讲,它是一个Oga对象。
>> @output.titles
NoMethodError: undefined method `titles' for #<GrabFeedFromJSE:0x00007fe7098bb648>
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
>> @output[:titles]
NoMethodError: undefined method `[]' for #<GrabFeedFromJSE:0x00007fe7098bb648>
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
>> @output.at_xpath('a')
NoMethodError: undefined method `at_xpath' for #<GrabFeedFromJSE:0x00007fe7098bb648>
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
#<GrabFeedFromJSE:0x00007fe7098bb648 @titles=NodeSet(Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/jse-index")] children: NodeSet(Text("\n\n \n\n\n JSE Index \n \n "), Element(name: "br"), Text("\n\n 4,614,305 Vol\n "), Element(name: "br"), Text("\n\n 299,175.87 \n "), Element(name: "img" attributes: [Attribute(name: "style" value: "height:16px"), Attribute(name: "src" value: "/img/down.png")]), Text("\n\n \n -541.06\n "))), Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/all-jamaican")] children: NodeSet(Text("\n\n \n\n\n JSE All Jamaican Composite Index \n \n "), Element(name: "br"), Text("\n\n 3,911,832 Vol\n "), Element(name: "br"), Text("\n\n 328,363.09 \n "), Element(name: "img" attributes: [Attribute(name: "style" value: "height:16px"), Attribute(name: "src" value: "/img/down.png")]), Text("\n\n \n -593.84\n "))), Element(name: "a" attributes: [Attribute(name: "href" value: "/market-data/index-data/jse-select")] children: NodeSet(Text("\n\n \n\n\n JSE Select Index \n \n "), Element(name: "br"), Text("\n\n 3,036,580 Vol\n "),
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
>> @output.titles
NoMethodError: undefined method `titles' for #<GrabFeedFromJSE:0x00007fe7098bb648>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
>> @output[:titles]
NoMethodError: undefined method `[]' for #<GrabFeedFromJSE:0x00007fe7098bb648>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
>> @output.at_xpath('a')
NoMethodError: undefined method `at_xpath' for #<GrabFeedFromJSE:0x00007fe7098bb648>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
from /app/views/portfolio/ticker.html.erb:5:in `_app_views_portfolio_ticker_html_erb__2987784693093146087_70315110554280'
>> @output[0].path
NoMethodError: undefined method '[]' for #<GrabFeedFromJSE:0x00007fe7098bb648>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
@output.methods # to get a list of methods
m = @output.method(:foo) # to get a specific method
m.owner # to find out which module the method belongs to