【问题标题】:Rails Routing Error w/ key带键的 Rails 路由错误
【发布时间】:2016-09-20 09:14:57
【问题描述】:

所以我制作了这条自定义路线 在我的路线上.rb

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

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

在 rake 路线上

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' 它会工作得很好。

我已经制作了类似的路线,除了这条路线之外,它们都可以正常工作。

【问题讨论】:

  • 什么不起作用?你有错误吗?
  • 我没有发现路线错误。仅适用于这条特定路线。
  • get'dashboard_report... 之间没有空格 - 这可能是问题所在还是这里只是一个错字?
  • 实际上它在我的代码上有一个空格。任何我不认为这是一个错字。因为我尝试删除密钥并且它能够访问我的控制器和方法。我似乎无法让它与上面的键一起工作
  • 在我的 rake 路线上,我有这个 'GET /dashboard_report_m/:date/:branch_id(.:format) 报告#monthly_and_branch' 但我仍然得到 No route matches [GET] "/dashboard_report_m"跨度>

标签: ruby-on-rails ruby


【解决方案1】:

需要检查的一些事项:

  1. 是否有带有monthly_and_branch 操作的ReportsController
  2. 是直接访问/dashboard_report_m/2016-09-20/1234还是使用路径助手会出现错误?

更新

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

【讨论】:

【解决方案2】:

当您访问以下路线时:

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

这是对'dashboard_report_m'GET 请求,带有查询参数params['date'] = '2016-09'params['branch_id'] = '1'

你应该做的是访问这条路线:

localhost:3000/dashboard_report_m/2016-09/1

这是对'dashboard_report_m/:date/:branch_id'GET 请求 - 即使用datebranch_id绑定参数

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

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 2010-12-26
    • 2012-05-22
    • 2013-06-04
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多