我是Spree的新手,从一个基本的应用程序开始,我添加了新的控制器和视图来显示自定义静态页面(模板)。一周前它还在工作,当我回到它时,它突然停止了工作。不确定我是否错过了什么。
出现的错误为:
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
任何关于如何解决此类问题的提示都将不胜感激,谢谢!
狂欢是由rails构建的,rails有一些范式,其中一个范式是约定优于配置,其中一种约定:控制器是复数,模型是单数。
控制器内
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
您可以从这里了解更多详细信息
由于yr在yr控制器中继承了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
。