2011-07-21 5 views
1

私のメンバーのプロフィールを示すページがあります。Rails map.connect route with trailing slash not:id to controller(Rails 2.3.5)

それはこの

www.mysite.com/members/membername 

ように呼ばれるが、これはparamsはのように最後のセグメントを通過するように失敗した場合すべてが正常に動作[:IDコントローラにスラッシュと同様にアクセスされたとき:

www.mysite.com/members/membername/ 

すくいルートこれを示しています

/members/:id      {:action=>"showmember", :controller=>"users"} 
/members/:id      {:action=>"showmember", :controller=>"users"} 

これは私がroutes.rbをしてみましたです:

map.connect 'members/:id/', :controller => "users", :action => "showmember", :requirements => {:id => /.*/} 
map.connect 'members/:id', :controller => "users", :action => "showmember", :requirements => {:id => /.*/} 

答えて

2

それは、このためです:あなたは:idを言っている

:requirements => {:id => /.*/} 

任意の文字をキャプチャします。あなたはこのような何かを行うことによって/文字をキャッチすることを防ぐことができます:

:requirements => {:id => /[^\/]+/} 

[^\/] = /を除く任意の文字(\が脱出することである)

+ =少なくとも一つの文字

*をあなたの例のように+の代わりに使用することができます。代わりに0+の文字を取り込みます。

正規表現ルールを「英数字のみ」またはそれに類するものとして追加することもできます。あなたの正規表現の文字列でもっと練習したい場合は、http://rubular.com/