2012-04-08 24 views
15

Recientemente me actualicé a 1.0.3, y el archivo routes.rb en mi carpeta config/routes parece ignorar todas mis rutas personalizadas.Agregar rutas al e-comercio de Spree Rails

MI 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 

Si me quedo bundle exec rake routes, devuelve todas las rutas approriate. Pero cuando trato de llegar a esa página específica, me sale:

undefined local variable or method `about_us_path' 

O el mismo error por cada enlace que está dentro de mis rutas personalizadas. De alguna manera mis rutas están siendo ignoradas. ¿Alguien sabe una forma de eludir este problema?

Respuesta

37

Encontré el mismo error y encontré this solution, que lo resolvió con el prefijo main_app, antes de cada uno de my_paths/_urls. En mi caso, estos fueron enlaces utilizados en uno de los archivos /override.rb.

Por lo tanto, intente: main_app.about_us_path.

19

Puede añadir nuevas rutas en el Spree utilizando bloque siguiente en el archivo routes.rb

Spree::Core::Engine.routes.prepend do 
    # Your new routes 
end 
+0

he encontrado que el uso de 'main_app.my_route_path' rompió todas las rutas de juerga a menos que fueran precedidas por' spree.'. Esta solución evita la necesidad de hacer eso. – Zubin

+0

@Zubin Sí, main_app.my_rute_path funciona para acceder a las rutas de aplicación principales desde los controladores/vistas relacionados con Spree. Para agregar rutas a juerga, puede usar la solución que yo proporcioné. –

+3

Parece que el método de anteponer ya no funciona. Echa un vistazo a @Ajay respuesta –

8

Para mí prepend no funcionó. para mí empate hizo la obra:

Spree::Core::Engine.routes.draw do 
    resources :orders, except: [:new, :create, :destroy] do 
     post :my_order, on: :collection 
    end 
end 
Cuestiones relacionadas