0

validate_pdf_links()配列を返すメソッド呼び出しからリンクの配列を取得しています。

broken_pdf_links = broken_pdf_links + validate_pdf_links()

複数のリンクを含む複数のページでこれを行っているため、次のように機能します。

  1. ページに移動。
  2. を使用して、そのページのすべてのリンクを確認しますvalidate_pdf_links()
  3. 次のページに移動します。
  4. 繰り返す。

リンクが壊れたときにどのページにいたかを知りたいので、ページの識別に次を使用しています。

page_name = @browser.title

次の行に沿った出力が必要です。

broken_pdf_links.each do |pdf|
puts "The pdf link #{pdf} was broke on page #{page_name}

要素を含むようにハッシュまたは配列を組み立て、提案した方法でそれらを取得するにはどうすればよいですか?

編集::::::現在試行中:

broken_pdf_links.each {|pdf| broken_pdfs = broken_pdfs.push[pdf,page_name]}

保存してから

broken_pdfs.each do |broke_pdf|
   puts "Link #{broke_pdf[0][0]} on Page #{broke_pdf[0][1]}\n"
   pdf_index += 1
end

読む

しかし、store コマンドで「TypeError: Array を Integer に変換できません」というエラーが表示されます。

4

2 に答える 2

1

各ページに複数の壊れたリンクがある可能性があります。ここではハッシュが良いでしょう。

broken_pdf_links = {}

broken_pdf_links.merge!(:page_name => validate_pdf_links())

broken_pdf_links.each do |k,v|
  puts "The pdf link(s) #{v} was broken on page #{k}"
end

出力:

pdfリンク["fail1"、 "fail2"、"fail3"]がpage_nameページで壊れていました

pdfリンク["fail1"]がother_pageページで壊れていました

配列をさらに進めてフォーマットすることができます。

于 2013-01-08T21:15:43.003 に答える
1

それ以外の:

broken_pdf_links.each {|pdf| broken_pdfs = broken_pdfs.push[pdf,page_name]}

使用する:

broken_pdfs = broken_pdf_links.map { |pdf| [pdf,page_name] }

ほとんどの場合、サブアレイを集約するいくつかの方法を混同していました。

mapより短く、より直接的な を使用するか、次のようにします。

broken_pdfs = []
broken_pdf.links.each do |pdf|
  broken_pdfs += [pdf, page_name]
end

それに代わるものは次のとおりです。

broken_pdfs = []
broken_pdf.links.each do |pdf|
  broken_pdfs.push([pdf, page_name])
end
于 2013-01-08T21:18:48.723 に答える