« RailsでWikiクローンを作る | メイン | Wiki新設 »
2005年09月01日
RailsでWikiクローンを作る 9: Routing
Routing とは、Rails で Apache の mod_rewrite みたいなことをする機構です。 詳しくはhttp://wota.jp/ac/?date=20050725が参考になりますので、そちらを参照してください。Rails でのアクションの URL の基本形は、
コントローラ名/アクション名/ID
です。 今まで、例えば FrontPage を表示しようと思うと、http://localhost:3000/wiki/show/FrontPageという、ちょっと長い URL になっていました。 本当は http://localhost:3000/ にアクセスすると FrontPage を表示したいところですが、今は Congratulations, you've put Ruby on Rails! のページ(public/index.html)が表示されているだけです。 これを Routing 機構を使って変更します。
Routing の設定ファイルは config/routes.rb です。 デフォルト(からコメントを削除)では次のような内容になっています。
ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl' map.connect ':controller/:action/:id' endこの map.connect の部分がルール定義で、上から順番に評価されます。 wsdl の行は web service 用で、とりあえず無視して構いません。 その下の
map.connect ':controller/:action/:id'の部分が Rails のデフォルトのRouting定義です。
よって、この行は一番下に常に残しておきましょう。さて、http://localhost:3000/、つまりトップページにアクセスした場合に FrontPage を表示するようにするには、まずconfig/routes.rb に以下の行を追加します (途中で改行していますが、もちろん一行に書いても構いません)。
map.connect '', :controller => 'wiki',
:action => 'show', :id => 'FrontPage'
第1引数は書き換え対象となる URL で、ここでは ''(空文字列)、すなわちトップページにアクセスした場合のルール定義ということになります。
第2引数以降は、マッチしたときに表示するページの定義で、この例では /wiki/show/FrontPage を表示するように指定しています。そして、もはや不要になった public/index.html を削除します(残っているとそちらが優先される模様)。 これらの作業をしてから、実際に http://localhost:3000/ にアクセスすると、FrontPage が表示されるはずです。
これだけでは Apache の mod_rewrite を使った場合とたいして嬉しさは変わりませんが、Rails の場合、Routing の設定は、ビューで使うヘルパーメソッド link_to にも影響をおよぼします。 今まで、
link_to 'FrontPage', :action => 'show', :id => 'FrontPage'は、
<a href="/wiki/show/FrontPage">FrontPage</a>というような HTML に展開されていましたが、上記の Routing の設定をした後は
<a href="/">FrontPage</a>に変わります。
ついでに、FrontPage 以外の各ページを表示する URL も Routing 機構を使って少し短くしてみます。 config/routes.rb に以下の行を追加します。
map.connect 'show/:id',
:controller => 'wiki', :action => 'show'
これで、今まで
http://localhost:3000/wiki/show/ページ名としてアクセスしていたものが、
http://localhost:3000/show/ページ名でアクセスできるようになります。
投稿者 tam : 2005年09月01日 08:46
トラックバック
このエントリーのトラックバックURL:
http://tam.qmix.org/mt3/mt-tb.cgi/16
このリストは、次のエントリーを参照しています: RailsでWikiクローンを作る 9: Routing:
» 3d star wars hentai from 3d star wars hentai
[続きを読む]
トラックバック時刻: 2007年04月07日 03:59
» california online real estate school from california online real estate school
[続きを読む]
トラックバック時刻: 2007年04月09日 11:48
» 73 break byward day in market without from 73 break byward day in market without
[続きを読む]
トラックバック時刻: 2007年04月14日 14:00
» alyssa milano nude mpegs from alyssa milano nude mpegs
[続きを読む]
トラックバック時刻: 2007年04月22日 08:42
» black sex teen from black sex teen
[続きを読む]
トラックバック時刻: 2007年04月22日 16:41
» fuck fest from fuck fest
[続きを読む]
トラックバック時刻: 2007年04月23日 09:59