This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/32

Ruby on Railsでは、URLのマッピングに関する情報を routes.rbファイルに記述します。これを記述する際に、URLを丸ごとパラメータとして渡したい事があります。例えば、はてなブックマークでは、特定のURLに関するエントリーの情報を参照するためのURLは、こんな感じになります:

http://b.hatena.ne.jp/entry/http://foo.bar.com/

これがdel.icio.usの場合、URLを直接指定するのではなく、md5を使ったダイジェストを渡すようになっています。URLの規格としては後者の方が正しいアプローチなのですが、アドレス記入欄にURLを手入力する場合や、グリースモンキーから利用する場合を考えると、md5を使わずに済んで楽なので、前者の方法も捨てがたいわけです。

では、これと同じ事をRailsでやるにはどうしたら良いでしょうか。単純に考えると、routes.rbファイルに;

map.connect 'entry/:url', :controller => 'entry', :action => :list

という感じに書けば良さそうです。しかし、実際にこのコードを実行してみると、URLに含まれる'/'がデリミタだと見なされてしまうため、うまく認識してくれません。

最後の'/'より後に続く部分をまとめてパラメータとして捕捉するためには、下記のように記述する必要があります。

map.connect 'entry/*url', :controller => 'entry', :action => :list

こうする事で、params[:url] には ActionController::Routing::PathComponent::Result オブジェクトが渡されます。このオブジェクトの実体は、デリミタ'/'で区切られたパートを保持する配列です。また、to_sメソッドを呼び出す事で、元のURLを再現できるようになっているので、

url = params[:url].to_s

とすると、パラメータとしてURLを丸ごと渡す事ができます。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/32

posted by Png genki on Fri 26 May 2006 at 21:43

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/31

Login Generator - ユーザ認証 へのトラックバック

転ばぬ先の杖という事で、login_generatorを初めて使った時にはまりやすい罠の情報。

login_generatorが生成するaccountのfunctional testのコードは、Fixtureのデータを@bob のような感じで参照できる、instantiated_fixturesという機能を使うように書かれています。

しかしながら、Railsのデフォルト設定ではこの機能はOFFになっているので、rake test:functionals を実行すると失敗します。

この機能をONにするには、test/test_helpler.rbの中にある

self.use_instantiated_fixtures  = false

という行を true に変えればOKです。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/31

posted by Png genki on Fri 26 May 2006 at 11:32
Contents
routes.rbでURLを丸ごとパラメータとして渡す記述法
Login Generatorの罠
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ