gpt4 book ai didi

ruby - 为什么我得到一个未定义的方法 `xpath' #?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:14 25 4
gpt4 key购买 nike

我有以下 XML 结构:

<agencies>
<city>
<name>New York</name>
<address>Street A, 101</address>
<phone>111-222-333</phone>
</city>
<city>
<name>Chicago</name>
<address>Street B, 201</address>
<phone>111-222-333</phone>
</city>
</agencies>

我正在尝试创建一个 Ruby 类来使用它。

我创建了类文件:

require 'nokogiri'

class Agency

def initialize(arg)
@file = arg.gsub(/-/,'_')
@doc = Nokogiri::XML(open("db/agencies/#{@file}.xml"))
end

def find_offices
@doc.xpath('//agencies/city').map do |i|
{ 'name' => xpath('name') }
end
#@entries = @doc.xpath('//agencies/city').map do |i|
# { 'name' => xpath('name').inner_text, 'address' => xpath('address').inner_text, 'phone' => xpath('phone').inner_text }
#end
end
end

对于我的 Controller ,我有:

class AgenciesController < ApplicationController

def index
@prefectures = Prefecture.all
end

def list
@prefecture = Agency.new(params[:prefecture_name])
@offices = @prefecture.find_offices
end
end

list 方法返回以下错误:

NoMethodError in AgenciesController#list

undefined method `xpath' for #<Agency:0x9e7f280>
Rails.root: /home/kleber/projects/rails_apps/job_board2

Application Trace | Framework Trace | Full Trace
app/models/agency.rb:13:in `block in find_offices'
app/models/agency.rb:12:in `map'
app/models/agency.rb:12:in `find_offices'
app/controllers/agencies_controller.rb:9:in `list'

最佳答案

这部分看起来很有趣:

def find_offices
@doc.xpath('//agencies/city').map do |i|
{ 'name' => xpath('name') }
end

您为 xpath() 查询返回的每个元素创建一个局部变量 i 但不使用它。您正在调用 xpath('name'),但我没有在可以调用的类(或全局范围内)上看到 xpath() 的定义.

你的意思是写更多这样的东西吗? (未经测试):

      { 'name' => i.xpath('name') }

关于ruby - 为什么我得到一个未定义的方法 `xpath' #?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com