Rails - 命名空间路由到路径助手

时间:2013-10-04 20:06:23

标签: ruby-on-rails routes

我有以下路线规则:

get '/reports/stats_by_date', to: 'reports#stats_by_date'

rake路线给了我这个:

reports_stats_by_date GET    /reports/stats_by_date(.:format)         reports#stats_by_date

看起来很正确。所以我试图用rake在rake中测试我的控制器:

def test_reports_should_load    
  get :reports_stats_by_date, :start_date => '2013-10-01', :end_date => '2013-10-05', :format => :json
  assert_response :success
end

非常简单。但是当我运行rake测试时,我收到以下错误:

ReportsControllerTest#test_reports_should_load:
ActionController::UrlGenerationError: No route matches {:start_date=>"2013-10-01", :end_date=>"2013-10-05", :format=>:json, :controller=>"reports", :action=>"reports_stats_by_date"}
test/controllers/reports_controller_test.rb:6:in `test_reports_should_load'

出于某种原因,当路线明确指向报告#stats_by_date时,Rails正在尝试加载操作:reports_stats_by_date。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为这是因为您只需要引用操作名称,而不是路径名称。 stats_by_date而不是reports_stats_by_date

 def test_reports_should_load    
  get :stats_by_date, :start_date => '2013-10-01', :end_date => '2013-10-05', :format => :json
  assert_response :success
end