データベースにアクセスしないModelを作りたい、というか文法わかんない
はてなのWebサービスでブックマークをいじってみたくなったので、とりあえず書いてるんだけど、Rubyの文法は片手間で動けばいいと思ってたせいでなんかRubyっぽくないコードになってる気がする。。。
RailsのController内でREXMLで検索した結果を返してViewで使いたいんだけど、なんかしっくり来ないんですよね。
def bookmark url = %Q[http://b.hatena.ne.jp/hogehoge/atomfeed?date=20070201] doc = nil open(url){|f| doc = REXML::Document.new f } @rss_title = REXML::XPath.first(doc, '//feed/title').text @items = Array.new REXML::XPath.each(doc, '//entry'){|item| hatena = HatenaBookmark.new hatena.title = REXML::XPath.first(item, 'title').text hatena.link = REXML::XPath.first(item, 'link').attributes['href'] @items.push hatena } end
DBに接続とかしないんでActiveRecordのクラスは必要ないんだけど、持ってきたブックマークの情報はModelとして扱いたい(というかmodelsディレクトリの中に入れておきたい)のでHatenaBookmarkをscript/create modelしてしまった。。。
うーん。構造体みたいなもんで充分なんだけどなぁ。でもmodelsの中に勝手にクラス作っても使えるっけ?
というか@itemsにHatenaBookmarkのオブジェクトを入れてってる時点でかっこ悪い気がしてきた。
特にModel作らないでもいいから
@items.push REXML::XPath.first(item, 'title').text REXML::XPath.first(item, 'link').attributes['href']
みたいなのをループしたら
@items => ['タイトルhoge','http://hogehoge.jp'], ['たいとるmoge','http://moge.com']
みたいな感じにならないかなぁ。(↑記法めちゃくちゃ!)
Rubyは文法が柔軟すぎてよく分からないこと多いです。頭かたいかも。
追記
ん。久しぶりにプログラムっぽいエントリだ。