0

私は、必要なデータを必要な形式で抽出するために、さまざまなメソッド、パラメーター、およびレンダリング タイプでヒットできるようにしたいレポート コントローラーを持っています。私は次のようにルートを設定しました:

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

したがって、次のようなクエリでヒットできます。

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

そして、Reports#show メソッドは実際に適切な内部メソッドへのルーティングを行います。

2 つの質問:

  1. 新しいレポートを設定するたびにルートを設定する必要はありません (たくさんあります)。これはワイルドカードを処理する最良の方法ですか?

  2. GET#1 が真であると仮定すると、テスト ケース内のコントローラーでを実行するにはどうすればよいですか? 私は運がないのでこれを試しました:

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

4

1 に答える 1

0

ルートでこれを行うのではなく、コントローラーでこれを行います。

ファイルに次stats_by_dateのようなルートが 1 つあります。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 に答える