带密钥的Rails路由错误

时间:2016-09-20 09:14:57

标签: ruby-on-rails ruby

所以我做了这个自定义路线 在我的routes.rb

get'dashboard_report_m/:date/:branch_id'=>'reports#monthly_and_branch'

我遇到路由错误,没有路由匹配[GET]" / dashboard_report_m" 在我的佣金路线上我有这个

在佣金路线上

GET /dashboard(.:format)    reports#today_admin
GET /dashboard_report/:date/:branch_id(.:format)    reports#date_and_branch
GET /dashboard_report_m/:date/:branch_id(.:format)  reports#monthly_and_branch

我制作的所有其他路线都很好但是这个路线似乎没有用。 我尝试删除密钥':date/:branch_id' 它会工作得很好。

我已经制作了类似的路线,除了这个之外它们都工作得很好。

2 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  1. ReportsController是否有monthly_and_branch行动?
  2. 如果您直接访问/dashboard_report_m/2016-09-20/1234或使用路径助手,是否会发生错误?
  3. 更新

    确定您正在访问路径http://localhost:3000/dashboard_report_m/?date=2016-09&branch_id=1 - 您将参数作为查询参数传递,这不是您的路由设置方式。你现在拥有它的方式是期待dashboard_report_m/2016-09/1。您需要从路线中删除日期和branch_id参数,或更改访问URL的方式。我建议阅读Rails Routing from the Outside In guide

答案 1 :(得分:1)

当您访问以下路线时:

localhost:3000/dashboard_report_m/?date=2016-09&branch_id=1

这是对GET的{​​{1}}次请求,查询参数'dashboard_report_m'params['date'] = '2016-09'

您应该做的是访问此路线:

params['branch_id'] = '1'

这是对localhost:3000/dashboard_report_m/2016-09/1 的{​​{1}}次请求 - 即使用GET'dashboard_report_m/:date/:branch_id'绑定参数

进一步阅读:了解bound parametersquery string之间的区别。这绝不是Rails特有的;它是所有Web应用程序工作方式的核心。