我是rails的新手,我正在努力正确处理路由。 现在我有一个名为“details”的链接,当用户点击它时,我希望使用我传入的位置参数调用方法“view_details”(在页面控制器中):
<%= 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&longitude=-121.922104884669”
我该如何解决这个问题?
答案 0 :(得分:2)
问题在于您将哈希作为location
参数的值传递,因此,它不是仅添加一个参数(即location
),而是添加两个参数(即latitud
和longitude
),您的路由失败。
要解决此问题,您可以设置不带location
的路线,如下所示:
get 'pages/view_details', to: 'pages#view_details'
现在,使用您现在拥有的相同链接,您将收到latitud
和longitude
分组在location
中作为查询字符串的参数,类似于:
pages/view_details?location%5Blatitude%5D=37.3505570824247&location%5Blongitude%5D=121.922104884669
您可以使用params
(与任何其他参数一样)在控制器中使用它们,例如:
latitude = params[:location][:latitude]
longitud = params[:location][:longitude]