Во время изучения Rails я создал приложение с контроллером Domains
, расположенным под контроллером Customers
. Я использую Rails 2.3.4, и это был опыт обучения. Мне удалось настроить нижеприведенную маршрутизацию:
customer_domains GET /customers/:customer_id/domains(.:format) {:controller=>"domains", :action=>"index"}
POST /customers/:customer_id/domains(.:format) {:controller=>"domains", :action=>"create"}
new_customer_domain GET /customers/:customer_id/domains/new(.:format) {:controller=>"domains", :action=>"new"}
edit_customer_domain GET /customers/:customer_id/domains/:id/edit(.:format) {:controller=>"domains", :action=>"edit"}
customer_domain GET /customers/:customer_id/domains/:id(.:format) {:controller=>"domains", :action=>"show"}
PUT /customers/:customer_id/domains/:id(.:format) {:controller=>"domains", :action=>"update"}
DELETE /customers/:customer_id/domains/:id(.:format) {:controller=>"domains", :action=>"destroy"}
customers GET /customers(.:format) {:controller=>"customers", :action=>"index"}
POST /customers(.:format) {:controller=>"customers", :action=>"create"}
new_customer GET /customers/new(.:format) {:controller=>"customers", :action=>"new"}
edit_customer GET /customers/:id/edit(.:format) {:controller=>"customers", :action=>"edit"}
customer GET /customers/:id(.:format) {:controller=>"customers", :action=>"show"}
PUT /customers/:id(.:format) {:controller=>"customers", :action=>"update"}
DELETE /customers/:id(.:format) {:controller=>"customers", :action=>"destroy"}
root / {:controller=>"customers", :action=>"index"}
Однако все тесты для контроллера доменов не пройдены из-за ошибок маршрутизации.
Например, следующий тест (сгенерированный генератором ресурсов Rails) завершается неудачно, как и все другие тесты в классе DomainsControllerTest
.
class DomainsControllerTest < ActionController::TestCase
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:domains)
end
end
Сбой из-за ошибки:
No route matches {:action => "index", :controller => "domains"}
Это имеет смысл, поскольку маршруты по умолчанию больше не существуют, и для контроллера домена требуется установить @customer
. Я провел целый день в поисках необходимых изменений, но почти каждый сайт говорит о тестах Rspec вместо обычных тестов Rails.
Как мне изменить domains_controller_test.rb
, чтобы он понимал вложенный ресурс?