0

我有一个 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在我的测试用例中对控制器执行 a?我试过这个没有运气:

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

4

1 回答 1

0

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

stats_by_date您的文件中有这样一条路线routes.rb

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
于 2013-10-04T15:34:39.547 回答