1

Rails アプリに Nokogiri を適用することについて質問があります。ウェブサイトから野球の統計を収集し、そのデータをビューに表示しようとしています。データの解析には成功しましたが、RESTful な方法でコードを保存する場所がわかりません。

現在、私は統計を収集し、それらを配列に入れてから、別の配列 (ランク、チーム、リーグなど) と照合しています。次に、2 つの配列がハッシュに入れられます。これを行うためのより効率的な方法はありますか (データを解析してからデータをハッシュ値として割り当て、ランク、チーム、リーグなどをハッシュ キーとして割り当てます)。

最後に、ノコギリ呼び出しをコントローラーに配置しましたが、もっと良い方法があると思います。Ryan Bate の Railscasts は、Nokogiri 呼び出しを rake タスク (/lib/tasks/) に入れることを提案しています。Web サイトで毎日新しい野球統計を受信したいので、定期的にレーキ タスクを実行する必要がありますか? 次に、どのようにデータをビューに実装するのが最善でしょうか。

オンラインで検索すると、これを config/initializers に入れるというアイデアがもたらされましたが、それがより良い解決策であるかどうかはわかりません。

以下はノコギリコールです。

task :fetch_mets => :environment do 
  require 'nokogiri' 
  require 'open-uri' 

    url = "http..." 
    doc = Nokogiri::html(open(url)) 

    x = Array.new
    doc.css('tr:nth-child(14) td').each do |stat|
      x << stat.content 
    end 

    a = %w[rank team league games_total games_won games_lost ratio streak] 
    o = Hash[a.zip x] 

    statistics = Hash[o.amp{|(y,z)| [y.to_sym, z]}] 

    @order_stat = statistics.each{|key, value| puts #{key} is #{value}."}
end 

何か明確にする必要がある場合はお知らせください。どうもありがとうございます。

4

1 に答える 1

2

データベースに statistics というテーブルを作成し、すべてのキーをハッシュに含めます (さらに created_on と id)。統計を保存するには、次のようにします。

Statistic.new(statistics).save

次に、ビューで、created_on が最も高いものをプルします。cron スケジュールで rake タスクを実行するには、wheneverを参照してください。

また、次のようにする方がきれいかもしれません:

keys = %w[rank team league games_total games_won games_lost ratio streak].map(&:to_sym)
values = doc.css('tr:nth-child(14) td').map(&:text)
statistics = Hash[keys.zip values]
于 2012-04-26T02:37:01.580 に答える