2012-04-04 3 views
1

Я делаю домашнюю работу, но у меня проблема с маршрутами non-RestFul. Моя спецификация:Rspec и non-RestFul маршруты

require 'spec_helper' 

describe MoviesController do 
    describe 'searching TMDb' do 
    before :each do 
     @fake_results = [mock('Movie'), mock('Movie')] 
    end 
    it 'should call the model method that performs TMDb search' do 
     Movie.should_receive(:find_in_tmdb).with('Star Wars'). 
     and_return(@fake_results) 
     get :search_similar_movies, { :search_terms => 'Star Wars' } 
    end 
    end 
end 

В конфигурации/routes.rb у меня есть:

resources :movies 
    'movies/search_similar_movies/:search_terms' 

Но когда я бегу автотест он дает мне ошибку, которая начинается с:

/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.1.0/lib/action_dispatch/routing/mapper.rb:181:in `default_controller_and_action': missing :action (ArgumentError) 

Это очевидно что что-то не так: config/routes.rb. Как это решить?

+2

Посмотрите: http://guides.rubyonrails.org/routing.html#adding-collection-routes – pjumble

+0

@pjumble, он работает. Нужно ли мне указывать param: search_term где-то в маршрутах? –

ответ

2

Ваш маршрут должен быть чем-то вроде

resources :movies do 
    get 'search_similar_movies', :on => :collection 
end 

или

match 'movies/search_similar_movies/:search_terms' => 'movies#search_similar_movies', :via => :get

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