我一直在使用以下路線成功在我的Rails應用2.X:是否有可能在Rails 2.x中創建類似'〜:id'的路由?
map.user ':id', :controller => 'users', :action => 'show'
這一點,因爲我的最低路線,正確地抓住東西像/tsmango
並呈現Users#show
。
現在我想添加第二個,類似的路徑,如:
map.post '~:id', :controller => 'posts', :action => 'show'
,因爲無論我的用戶或我的職位允許包含〜因爲這條路線會出現在我的map.user路線以上,我認爲這將正確地捕捉到從/~
開始的任何呼叫,並呈現我的Posts#show
操作。不幸的是,我無法讓這個工作。
有趣的是,這種類似的路線完美的作品:
map.post ':id~', :controller => 'posts', :action => 'show'
雖然,我當然願意去與':id~'
,因爲它具有相同的效果,在這一點上我真的只是沮喪和好奇至於如何建立一條匹配'~:id'
的路線。
值得一提的是,我不想修改我的to_param方法或我的實際用戶併發布slugs以包含prepended〜。我只是想通過一條路線來指出哪個行爲應該處理它。除非我錯了,否則這就排除了類似的用法:
:requirements => {:id => /\~[a-zA-Z0-9]/}
非常感謝您提供的任何幫助!
更新:我知道路由優先級,並在上面聲明,我將'~:id'
路由放置在':id'
路由的上方。我收到以下錯誤試圖生成的URL像post_path(@post)
:
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.to_sym
是的,我知道他們優先。我在上面提到,我將'〜:id'路線放在':id'路線的上方,但我仍然無法完成這項工作。 我收到此錯誤: 當你沒有想到它時,你有一個零對象!評估nil.to_sym時發生錯誤 當我嘗試使用如下路線: link_to('Test',post_path(@post)) – tsmango 2010-07-23 17:33:26