2013-10-04 80 views
0

我有一個Reports控制器,我希望能夠使用許多不同的方法,參數和呈現類型來提取我需要的任何數據。我有我的路線設置這樣的:Rails - 使用通配符路由

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

所以我可以用這樣的查詢打:

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

我的報告#show方法實際上不會路由到相應的內部方法。

兩個問題:

  1. 我不希望有每次我建立一個新的報告時間(我將有很多)設立的路線。這是處理通配符的最佳方式嗎?

  2. 假設#1爲真,我如何在我的測試用例中對控制器執行GET?我想這沒有運氣:

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

+0

你爲什麼想這樣做?如果您想要顯示一系列日期的報告,請在視圖中爲給定網頁執行... – dax

回答

0

你不會與路線做到這一點,你會在控制器中做到這一點。

你必須爲stats_by_date的是這樣一條路線在routes.rb文件:

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

你會收集行動中PARAMS與您的控制器是這樣的:

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