【问题标题】:Rails -- routing with wildcardRails -- 使用通配符路由
【发布时间】:2013-10-04 14:32:18
【问题描述】:

我有一个 Reports 控制器,我希望能够使用许多不同的方法、参数和渲染类型来以我想要的任何格式提取我需要的任何数据。我的路线设置如下:

GET    /reports/:method(.:format)         reports#show

所以我可以这样查询:

/reports/stats_by_date.json?start_date=2013-10-01&end_date=2013-10-05

而我的 Reports#show 方法实际上会路由到适当的内部方法。

两个问题:

  1. 我不希望每次设置新报告时都必须设置路线(我会有很多)。这是处理通配符的最佳方式吗?

  2. 假设 #1 为真,我如何在我的测试用例中对控制器执行GET?我试过这个没有运气:

get :reports, :method => 'stats_by_date', :start_date => '2013-10-01', :end_date => '2013-10-05'

【问题讨论】:

  • 为什么要这样做?如果要显示某个日期范围的报告,请在给定页面的视图中执行此操作...

标签: ruby-on-rails routes


【解决方案1】:

您不会对路由执行此操作,而是在控制器中执行此操作。

你的stats_by_date 文件中有一个类似这样的路径:

get 'reports/stats_by_date' => 'reports#stats_by_date'

您将在该操作中收集参数,并在您的控制器中使用类似这样的内容:

def stats_by_date
  start_date = params[:start_date]
  end_date   = params[:end_date]
  @stats     = Model.where('date >= ? AND date <= ?', start_date, end_date)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多