rails 独学して軽くにちゃんまとめつくる

インターン中大学生のブログ

ぐるぐる回って何をしたいのかが変わってく。今はマッチングサイトを作りたい、もしくは論文のキュレーションサイトかな。

Rubyのコンソールで出力したのをrails でも出力したい。

anemone と nokogiri でどうにか文字を取得してコンソールに出力させることはできたが、 rails に出力させることができずに困っていた。なんとか解決できたのでここに記す。

 

たとえばヤフーニュースのタイトルを抜き出したとする

 

yahoo.rb

require 'open-uri'
require 'nokogiri'

url = 'http://www.yahoo.co.jp/'
user_agent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36'
charset = nil
html = open(url, "User-Agent" => user_agent) do |f|
  charset = f.charset
  f.read
end

doc = Nokogiri::HTML.parse(html, nil, charset)

doc.css('#topicsfb > div.topicsindex > ul.emphasis > li > a').each { |a_tag|
  puts a_tag.text
}

 

これをファイルとして出力するために

 $ ruby yahoo.rb >> _text.html.erb

 とする。このコマンドは外部ファイルに出力するためのものである。そうしたら _text.html.erb というファイルが自動的に作られて、その中に記事のタイトルが書きこまれる。この _text.html.erb というタイトルのつけかたは、のちに rail のビューでパーシャルとして呼び出したいからだ。そうすることで表示させることができる。

で、表示させたいビューで

hyouji.html.erb

render 'text'

と打って hyouji.html.erb を普段通りにネットで起動させてみよう。 rails でも nokogiri で得られた情報が出力される。あたりまえだが、hyouji.html.erb と _text.html.erb はおなじフォルダに存在させる必要がある。プロトタイプなら、_text.html.erb をコピペして hyouji.html.erb とおなじビューフォルダにいれるのがいいだろう。