繁体   English   中英

Rails Spree 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_pathlink_to这一观点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM