![](/img/trans.png)
[英]Routing Error uninitialized constant ArticleController rails app
[英]Rails Spree App Routing Error: 'uninitialized constant'
我是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
非常感谢您提供有关如何解决此类问题的提示,谢谢!
spree是由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
由于yr继承了yr控制器中的Spree::StoreController
,因此需要稍微更改yr route.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
这一观点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.