2013-04-13 2 views
2

Я создал устанавливаемый двигатель с этими маршрутами:RoutingError на смонтированный двигателе в контроллере спецификации

Rails.application.routes.draw do 
    scope module: :minimalist_cms do 
    root to: "pages#show" 
    get ':id', to: "pages#show" 
    resources :pages 
    resources :page_parts 
    end 
end 

И у меня есть этот тест:

require 'spec_helper' 

module MinimalistCms 
    describe PagesController, type: :controller do 

    let(:page) { stub_model(Page) } 

    describe :show do 
     context "when there is a page" do 
     it 'should find by slug' do 
      Page.should_receive(:find_by_slug).and_return(page) 
      get :show, id: 'test' 
     end 
     end 
    end 
    end 
end 

И когда я тип rake routes у меня этот результат :

  root  /       minimalist_cms/pages#show 
       GET /:id(.:format)     minimalist_cms/pages#show 
     pages GET /pages(.:format)    minimalist_cms/pages#index 
       POST /pages(.:format)    minimalist_cms/pages#create 
     new_page GET /pages/new(.:format)   minimalist_cms/pages#new 
    edit_page GET /pages/:id/edit(.:format)  minimalist_cms/pages#edit 
      page GET /pages/:id(.:format)   minimalist_cms/pages#show 
       PUT /pages/:id(.:format)   minimalist_cms/pages#update 
       DELETE /pages/:id(.:format)   minimalist_cms/pages#destroy 
    page_parts GET /page_parts(.:format)   minimalist_cms/page_parts#index 
       POST /page_parts(.:format)   minimalist_cms/page_parts#create 
new_page_part GET /page_parts/new(.:format)  minimalist_cms/page_parts#new 
edit_page_part GET /page_parts/:id/edit(.:format) minimalist_cms/page_parts#edit 
    page_part GET /page_parts/:id(.:format)  minimalist_cms/page_parts#show 
       PUT /page_parts/:id(.:format)  minimalist_cms/page_parts#update 
       DELETE /page_parts/:id(.:format)  minimalist_cms/page_parts#destroy 

это работает, но если я меняю на это, в моем двигателе:

MinimalistCms::Engine.routes.draw do 
    scope module: :minimalist_cms do 
    root to: "pages#show" 
    get ':id', to: "pages#show" 
    resources :pages 
    resources :page_parts 
    end 
end 

И в моем приложении:

, установленном в моем фиктивном приложении, как это:

Dummy::Application.routes.draw do 
    mount MinimalistCms::Engine, at: '/' 
end 

У меня есть эта ошибка:

Failure/Error: get :show, id: 'test' 
ActionController::RoutingError: 
    No route matches {:id=>"test", :controller=>"minimalist_cms/pages", :action=>"show"} 

И в rake routes результате, кажется, быть похожими :

minimalist  /       MinimalistCms::Engine 
      root  /       minimalist_cms/pages#show 
       GET /:id(.:format)     minimalist_cms/pages#show 
     pages GET /pages(.:format)    minimalist_cms/pages#index 
       POST /pages(.:format)    minimalist_cms/pages#create 
     new_page GET /pages/new(.:format)   minimalist_cms/pages#new 
    edit_page GET /pages/:id/edit(.:format)  minimalist_cms/pages#edit 
      page GET /pages/:id(.:format)   minimalist_cms/pages#show 
       PUT /pages/:id(.:format)   minimalist_cms/pages#update 
       DELETE /pages/:id(.:format)   minimalist_cms/pages#destroy 
    page_parts GET /page_parts(.:format)   minimalist_cms/page_parts#index 
       POST /page_parts(.:format)   minimalist_cms/page_parts#create 
new_page_part GET /page_parts/new(.:format)  minimalist_cms/page_parts#new 
edit_page_part GET /page_parts/:id/edit(.:format) minimalist_cms/page_parts#edit 
    page_part GET /page_parts/:id(.:format)  minimalist_cms/page_parts#show 
       PUT /page_parts/:id(.:format)  minimalist_cms/page_parts#update 
       DELETE /page_parts/:id(.:format)  minimalist_cms/page_parts#destroy 

Поведение приложения не изменяется, оно работает, но тест завершается с ошибкой.

У вас есть решение?

ответ

0

Возможно, вместо использования области действия попытайтесь использовать маршруты записи обычным способом (без области видимости).

Теперь в файле, где вы объявляете движок, который наследуется от Rails :: Engine, добавляет изолированное_namespace.

Module MinimalistCms 
    Class Engine < Rails::Engine 
    isolate_namespace MinimalistCms 
    end 
end 

Попробуйте протестировать сейчас.

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