データベースをインポートしようとしているXMLデータがあります。 nokogiri gemを使用しようとしています。私はxml_data.rbというファイルを書いています。私は、コマンドライン上で>ruby xml_data.rb
を実行すると、私は次のエラーを受け取る:RailsでXMLデータをインポートする方法5
xml_data.rb:8:in
block in <main>': uninitialized constant Job (NameError) from C:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/nokogiri-1.7.0.1-x86-mingw32/lib/nokogiri/xml/node_set.rb:187:in
block in each' from C:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/nokogiri-1.7.0.1-x86-mingw32/lib/nokogiri/xml/node_set.rb:186:inupto' from C:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/nokogiri-1.7.0.1-x86-mingw32/lib/nokogiri/xml/node_set.rb:186:in
each' from xml_data.rb:7:in `'
私はこれを適切に行う方法を理解していません。
require 'nokogiri'
OLD_DATA = 'data/old_data.xml'
doc = File.open(OLD_DATA) {|f| Nokogiri::XML(f)}
doc.css('request').each do |node|
Job.create(
:last_name => node['name'],
:telephone => node['phone'],
:street_address => node['address'],
:city => node['city'],
:state => node['state'],
:zip => node['zip'],
:email => node['email'],
:au_chog => node['chogAu'],
:person_type => node['affil'],
:research_use => node['use'],
:subject => node['subject'],
:notes => node['note'],
:start_date => node['startDate'],
:end_date => node['addDate'],
:complete => true,
:time_spend => node['hours']
)
end
ルビー:v2.3.3 のRails:バージョン5.0.1
UPDATE
私はrakeタスクになるこのコードを書き直し、以下のxml_data.rbファイルです。しかし、私はこれをしていない。私がこのタスクを実行すると、正しいXML構文といくつかの構文エラーが発生します。以下は更新されたコードです:
require 'nokogiri'
namespace :db do
namespace :seed do
desc 'Add old data to database'
task :import_data => :environment do
OLD_DATA = "#{Rails.root}/lib/assets/data/old_data.xml"
doc = Nokogiri::XML(File.open(OLD_DATA)) do |config|
config.options = Nokogiri::XML::ParseOptions::STRICT
end
doc.css("request").each do |node|
Job.create(
:last_name => node['name'],
:telephone => node['phone'],
:street_address => node['address'],
:city => node['city'],
:state => node['state'],
:zip => node['zip'],
:email => node['email'],
:au_chog => node["chogAu"],
:person_type => node['affil'],
:research_use => node['use'],
:subject => node['subject'],
:notes => node['note'],
:start_date => node['startDate'],
:end_date => node['addDate'],
:complete => true,
:time_spend => node['hours']
)
end
end
end
end
まだ構文エラーがありますか?これは実行する必要があるように見えます... – Glyoko
私はそうではありません。私は問題を引き起こしていたラインを持っていた。私がそれを発見したとき、私はその投稿を更新しました。 – pshowell