2012-04-08 6 views
15

Ich habe gerade ein Upgrade auf 1.0.3 durchgeführt, und die Datei routes.rb in meinem Ordner config/routes scheint alle meine benutzerdefinierten Routen zu ignorieren. Hinzufügen von Routen zu Rails Spree E-Commerce

MY 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 

Wenn ich bundle exec rake routes ausführen, gibt es alle approriate Routen. Aber wenn ich versuche, dass bestimmte Seite zu erreichen, erhalte ich:

undefined local variable or method `about_us_path' 

Oder der gleiche Fehler für jeden Link, der in meinen eigenen Routen ist. Irgendwie werden meine Routen ignoriert. Kennt jemand eine Möglichkeit, dieses Problem zu umgehen?

Antwort

37

Ich habe den gleichen Fehler gefunden und this solution gefunden, die es durch das Voranstellen main_app vor jedem von my_paths/_urls löste. In meinem Fall waren dies Links, die in einer der /override.rb Dateien verwendet wurden.

Also, versuchen Sie: main_app.about_us_path. mit folgenden Block in routes.rb Datei

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

Sie können neue Routen in der Spree hinzufügen prepend hat nicht funktioniert. für mich getan hat, die Arbeit machen:

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

ich, dass mit 'main_app.my_route_path' alle Routen spree brach gefunden, wenn sie mit' spree.' vorangestellt wurden. Diese Lösung verhindert die Notwendigkeit, dies zu tun. – Zubin

+0

@Zubin Ja, main_app.my_route_path funktioniert für den Zugriff auf Hauptanwendungsrouten von Spree-bezogenen Controllern/Sichten. Zum Hinzufügen einer Route zu spree können Sie die von mir angegebene Lösung verwenden. –

+3

Es scheint, dass Prepend-Methode nicht mehr funktioniert. Werfen Sie einen Blick auf @Ajay Antwort –