2013-10-04 3 views
0

У меня есть следующее правило маршрута:Rails - пространства имен маршрутизации на путь Помощники

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

И реки маршруты дают мне это:

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

Это выглядит правильно. Поэтому я пытаюсь проверить мой контроллер изнутри рейка с помощью этой функции:

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 

Довольно просто. Но когда я запускаю тест грабли, я получаю следующее сообщение об ошибке:

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' 

По какой-то причине, Rails пытается загрузить действие: reports_stats_by_date когда маршрут четко указывает на сообщения # stats_by_date. Что я сделал здесь неправильно?

+0

В вас test_reports_should_load попытаться получить '/ отчеты/stats_by_date',: start_date => '2013-10-01',: end_date => '2013-10-05',: Формат => : JSON. Обычно get ожидает имя действия как символ, а не вспомогательный метод. Дайте мне знать, если это работает – Raghu

+0

Nope. Теперь у меня нет маршрутных совпадений ...: action => "reports/stats_by_date" –

+0

Тогда это определенно получится: stats_by_date,: start_date => '2013-10-01',: end_date => '2013-10 -05 ',: format =>: json. Теперь, когда im дает имя действия, а не путь – Raghu

ответ

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 
+0

, это работает. Может ли кто-нибудь объяснить мне, как Rails будет обрабатывать два конфликтующих маршрута в разных пространствах имен? Например,/reports/stats_by_date vs/charts/stats_by_date. –

Смежные вопросы