Rails狂欢应用程序路由错误:'未初始化的常量'

时间:2016-01-08 10:28:04

标签: ruby-on-rails ruby spree

我是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

有关如何解决此类问题的任何提示将非常感谢,谢谢!

2 个答案:

答案 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该视图。