Ruby on Railsで"http://example.com/search/add/http://hatena.ne.jp/"というURLを受け付けたい場合、ルーティングはどのように設定すればいいでしょうか?

searchコントローラのaddアクションにパラメータurlに"http://hatena.ne.jp"が渡るようにしたいです。
config/route.rbに
map.connect 'search/add/*url', :controller => 'search', :action => 'add'
と指定し、コントローラ内で
url=params[:url].join('/')
とすれば出来たのですが、いまいちスマートではない気がします。
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2007/11/10 17:57:50
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:urekat No.1

回答回数12ベストアンサー獲得回数3

ポイント100pt

map.connect 'top/url/:uri', :controller=>"top", :action=>"url", :uri=>/.*/

こう指定して、


http://localhost:3000/top/url/http://d.hatena.ne.jp/urekat

こういうアクセスをすると、


Processing TopController#url (for 127.0.0.1 at 2007-11-10 12:40:50) [GET]

Session ID: 692c8008bec6f0f50a342ddc0c54badf

Parameters: {"uri"=>"http://d.hatena.ne.jp/urekat", "action"=>"url", "controller"=>"top"}

こうなります。

id:hajimepg

回答ありがとうございます。

ずばり欲しかった情報を最初に頂いてしまいました。

config/route.rbで完結出来るのがスマートですよね。

:uri=>/.*/

requirements => {
url => /.*/ }

の省略した書き方というのも調べてわかりました。

requirementsは条件を制限してマッチしにくくすることしか出来ないと思っていたのですが、条件を拡大することも出来るのですね。

勉強になりました。

回答ありがとうございました。

2007/11/10 14:18:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません