2011-03-04 100 views
0

我工作的個人資料頁上,這樣的配置是這樣的:on Rails的路由錯誤3

 
routes.rb 
=>match "user/:login(*path)" => 'users#profile', :as => :profile 
rake routes 
=> profile /user/:login(*path)(.:format) {:action=>"profile", :controller=>"users"} 
on console 
>Rails.application.routes.recognize_path("/user/example/whatever") 
=> {:action=>"profile", :login=>"example", :controller=>"users", :path=>"/whatever"} 

而且我有UsersControllers一個配置文件操作。 但是,當我在一個視圖中使用

<%= link_to user.name, profile_path(user.login) %>

我得到的錯誤

No route matches {:login=>"example", :controller=>"users", :action=>"profile"}

我缺少什麼? 感謝

更新:
感謝您的回答和關注,史蒂夫!

經過大量的時間嘗試後,一位同事發現我缺少的東西:問題出在一些登錄電子郵件也是「@」,「。」等。解決方案是在to_url params [:login] link_to:

<%= link_to 'name', profile_path(params[:login].to_url) %>

再次感謝您的關注!

回答

0

使用你的配置,路由和幫助程序似乎在Rails 3.0.5示例應用程序中正常工作。

我驗證了Rails的控制檯路線幫手profile_path:

>> app.profile_path('example') 
=> "/user/example" 

,並檢查其在視圖中工作,以及:在任一位置

<%= link_to 'name', profile_path(params[:login]) %> 

沒有路線錯誤。並把<%=調試(PARAMS)%>在該視圖顯示路徑 '/用戶/示例/不管' 被正確地分析:

--- !map:ActiveSupport::HashWithIndifferentAccess 
controller: users 
action: profile 
login: example 
path: /whatever