向Rails的Spree电子商务添加路由

Tri*_*rip 15 ruby-on-rails spree

我刚刚升级到1.0.3,我的config/routes文件夹中的routes.rb文件似乎忽略了我所有的自定义路由.

我的routes.rb

JollyStore::Application.routes.draw do
  # Mount Spree's routes
  mount Spree::Core::Engine, :at => '/'

  root :to => 'pages#index'

  namespace :admin do
    resources :wysiwygs
  end

  match 'about_us/', :to => "pages#about_us"
  match 'services/', :to => "pages#services"
  match 'raw_resources/', :to => "pages#raw_resources"
  match 'contact_us/', :to => "pages#contact_us"

  match 'privacy_policy/', :to => "pages#privacy_policy"
  match 'return_policy/', :to => "pages#return_policy"
  match 'refund_policy/', :to => "pages#refund_policy"
  match 'cancellation_policy/', :to => "pages#cancellation_policy"
  match 'delivery_shipping_policy/', :to => "pages#delivery_shipping_policy"


end
Run Code Online (Sandbox Code Playgroud)

如果我运行bundle exec rake routes,它将返回所有适当的路由.但当我尝试访问该特定页面时,我得到:

undefined local variable or method `about_us_path'
Run Code Online (Sandbox Code Playgroud)

或者我的自定义路由中的每个链接都有相同的错误.不知怎的,我的路线被忽略了.有没有人知道绕过这个问题的方法?

man*_*ire 38

我遇到了同样的错误并找到了这个解决方案,它通过前缀解决了它main_app,在每个之前my_paths/_urls.就我而言,这些是其中一个/override.rb文件中使用的链接.

所以,试试:main_app.about_us_path.


Sha*_*kar 19

您可以使用routes.rb文件中的以下块在Spree中添加新路由

Spree::Core::Engine.routes.prepend do
  # Your new routes
end
Run Code Online (Sandbox Code Playgroud)

  • 似乎prepend方法不再起作用了.看看@Ajay的回答 (3认同)

Aja*_*jay 8

对我来说,前置不起作用.为我画画做了工作:

Spree::Core::Engine.routes.draw do
   resources :orders, except: [:new, :create, :destroy] do
      post :my_order, on: :collection
   end
end
Run Code Online (Sandbox Code Playgroud)