2017-07-26 77 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