我是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
有关如何解决此类问题的任何提示将非常感谢,谢谢!
答案 0 :(得分:0)
狂欢是由rails和rails构建的一种范式,其中一种范式是约定配置,其中一种约定:控制器是复数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
了解更多详情答案 1 :(得分:0)
由于您在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
该视图。