Rails Spree 应用程序路由错误:'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

任何关于如何解决此类问题的提示都将不胜感激,谢谢!

狂欢是由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_pathlink_to

相关内容

最新更新