2017-07-26 38 views
1

我是rails新手,我正在努力正確處理路由。 現在我有一個名爲「細節」的鏈接,當用戶點擊它時,我想用我正在傳入的位置參數調用方法「view_details」(在頁面控制器內):在Ruby on Rails中使用參數進行路由

<%= link_to "Details", :controller => "pages", :action => "view_details", 
:location => v["coordinates"]%> 

在我的routes.rb文件,我有:

get 'pages/view_details/:location', to: 'pages#view_details' 

我收到以下錯誤: 沒有路由匹配[GET] 「/pages/view_details/latitude=37.3505570824247 &經度= -121.922104884669 「

當我耙路線,我看到這個(沒有前綴):

我該如何解決這個問題?

+0

你能分享rake路由輸出嗎?,什麼是路由前綴? – icemelt

+0

剛剛編輯帖子,查看插入的圖片 – user2963365

回答

2

的問題是,你傳遞一個哈希作爲location參數,這樣一個價值,而不是僅僅增加一個參數(即location),它增加了兩個參數(即latitudlongitude)和您的路由失敗。

爲了解決這個問題,你可以設置你的路線不location,像這樣:

get 'pages/view_details', to: 'pages#view_details' 

現在,使用你現在有相同的鏈接,您將收到location分組latitudlongitude參數爲查詢字符串,一些類似於:

pages/view_details?location%5Blatitude%5D=37.3505570824247&location%5Blongitude%5D=121.922104884669 

而且你可以在你的控制器params使用它們(一s),例如:

latitude = params[:location][:latitude] 
longitud = params[:location][:longitude] 
+0

謝謝,修復了我遇到的錯誤。但現在它似乎在調用頁面#show action並顯示pages/show視圖。 view_details操作根本沒有被執行。你知道這可能是什麼原因嗎? – user2963365

+0

沒關係,我能夠解決它使用https://stackoverflow.com/questions/30633639/controller-method-show-getting-called – user2963365