をQuote
呼び出しQuote#scrape_quote
たときに、インスタンスでこれらの変数を設定またはアクセスしようとすると、基本的に何か問題が発生しているようです。値がスクレイピングされ、scraped_valuesハッシュに正常に保存されていることがわかりquote.lives
ますnil
。たとえば、getを呼び出すと、変数にアクセスできません。
ここで何が間違っているのですか?
quote.rb
class Quote < ApplicationRecord
require 'watir'
attr_accessor :lives, :benefit, :payment
def scrape_quote
rows = @browser.trs
quote_rows = rows[1..8]
scraped_values = {}
quote_rows.each do |row|
scraped_values[row.tds[0].text] = row.tds[1].text
end
@lives = scraped_values[0]
@benefit = scraped_values[1]
@payment = scraped_values[2]
puts scraped_values
end
end
ハッシュの値をメンバー変数に順番に割り当てたい場合は、次のhash#values
ように戻り値から並列割り当てを使用できます。
2.4.1 :001 > h = {}
=> {}
2.4.1 :002 > h[:one] = 1
=> 1
2.4.1 :003 > h[:two] = 2
=> 2
2.4.1 :004 > h[:three] = 3
=> 3
2.4.1 :005 > @one, @two, @three = h.values
=> [1, 2, 3]
2.4.1 :006 > @one
=> 1
2.4.1 :007 > @two
=> 2
2.4.1 :008 > @three
=> 3
2.4.1 :009 >
あなたの場合の特定のコードは次のようになります。
class Quote < ApplicationRecord
require 'watir'
attr_accessor :lives, :benefit, :payment
def scrape_quote
rows = @browser.trs
quote_rows = rows[1..8]
scraped_values = {}
quote_rows.each do |row|
scraped_values[row.tds[0].text] = row.tds[1].text
end
@lives, @benefit, @payment = scraped_values.values
puts scraped_values
end
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加