2016-01-08 3 views
0

Я новичок в Spree, начиная с базового приложения, я добавил новый контроллер и просмотрел для отображения пользовательской статической страницы (templater). Он работал неделю назад, когда я вернулся к нему, он внезапно прекратил работать. Не уверен, что я что-то пропустил.Ошибка маршрутизации приложения Rails Spree: «uninitialized constant»

Ошибка представлены в:

Routing Error 
uninitialized constant TemplaterController 

Rails.root: /Users/MDB/Dropbox/party/Github/basic_spree_store 

Вот мой app/controllers/spree/templater_controller.rb:

module Spree 
    class TemplaterController < Spree::StoreController 

    def index 

    end 
    end 
end 

Мои routes.rb:

Rails.application.routes.draw do 
    mount Spree::Core::Engine, :at => '/' 

    get '/templater', :to => 'templater#index', :as => :templater 
end 

Любые советы о том, как я могу устранить что-то вроде этого будет спасибо, спасибо!

ответ

0

spree построено рельсами и рельсами имеет некоторую парадигму, одна из парадигм условно над конфигурацией, одно из условий: контроллер - множественная модель dan - единственная.

в контроллере

templates_controller.rb

module Spree 
    class TemplatesrController < Spree::StoreController 

    def index 

    end 

end 

Rails.application.routes.draw do 
    mount Spree::Core::Engine, :at => '/' 
    resources :templaters 
end 

ресурсы знают как несколько маршрутов, он будет генерировать маршруты для некоторых действий, является индекс, шоу, новые, редактировать, создавать, обновлять и уничтожить

от вашего требование, которое вы хотите использовать единым ресурсом, не следуя правилам, поэтому, пожалуйста, избегайте использования имени или метода имени действия, покажите, не измените, не создайте, не обновите и не уничтожьте. Пусть говорят, что мы используем лист

template_controller.rb

module Spree 
    class TemplaterController < Spree::StoreController 
    def list 

    end 
    end 
end 

routes.rb

Rails.application.routes.draw do 
    mount Spree::Core::Engine, :at => '/' 

    get '/templater', :to => 'templater#list', :as => :templater 
end 

Вы можете узнать более подробную информацию от here

0

Поскольку год наследуя Spree::StoreController контроллер год, вам необходимо изменить YR routes.rb бит, например:

Rails.application.routes.draw do 
    mount Spree::Core::Engine, :at => '/' 
end 

Spree::Core::Engine.add_routes do 
    get 'templater', :to => 'templater#index', :as => :templater 
end 

, то просто убедитесь, что у вас есть файл app/view/spree/templater/index.html.erb, а затем вы можете использовать templater_path, чтобы link_to этот вид.

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