2012-04-08 36 views
15

Tôi vừa mới nâng cấp lên 1.0.3 và tệp routes.rb trong thư mục cấu hình/tuyến đường của tôi có vẻ bỏ qua tất cả tuyến đường tùy chỉnh của tôi.Thêm tuyến đường vào Spree thương mại điện tử

routes.rb MY

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 

Nếu tôi chạy bundle exec rake routes, nó sẽ trả về tất cả các tuyến đường approriate. Nhưng khi tôi cố gắng tiếp cận trang cụ thể đó, tôi nhận được:

undefined local variable or method `about_us_path' 

Hoặc cùng một lỗi cho mọi liên kết nằm trong tuyến đường tùy chỉnh của tôi. Bằng cách nào đó các tuyến đường của tôi bị bỏ qua. Có ai biết cách nào để vượt qua vấn đề này không?

Trả lời

37

Tôi gặp phải lỗi tương tự và tìm thấy this solution, giải quyết lỗi này bằng cách đặt trước main_app, trước mỗi số my_paths/_urls. Trong trường hợp của tôi, đây là các liên kết được sử dụng trong một trong các tệp /override.rb.

Vì vậy, hãy thử: main_app.about_us_path.

19

Bạn có thể thêm đường bay mới trong Spree sử dụng khối sau đây trong tập tin routes.rb

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

tôi thấy rằng sử dụng 'main_app.my_route_path' đã phá vỡ tất cả các tuyến Spree trừ khi họ được thêm vào phía trước với' spree.'. Giải pháp này ngăn cản sự cần thiết phải làm điều đó. – Zubin

+0

@Zubin Có, main_app.my_route_path hoạt động để truy cập các tuyến ứng dụng chính từ bộ điều khiển/lượt xem có liên quan của Spree. Để thêm tuyến đường vào Spree, bạn có thể sử dụng giải pháp do tôi cung cấp. –

+3

Dường như phương thức prepend không hoạt động nữa. Hãy xem câu trả lời @Ajay –

8

Đối với tôi thêm vào trước đã không làm việc. cho tôi vẽ đã làm công việc:

Spree::Core::Engine.routes.draw do 
    resources :orders, except: [:new, :create, :destroy] do 
     post :my_order, on: :collection 
    end 
end 
Các vấn đề liên quan