14

Tôi đang sử dụng gem rails3-jquery-autocomplete và không gặp vấn đề gì, tuy nhiên bây giờ tôi đã di chuyển biểu mẫu tự động điền của mình vào mẫu ứng dụng và do đó cuộc gọi ajax hiện đang được xử lý bởi bộ điều khiển ứng dụng. từ:Làm thế nào để bạn định tuyến một hành động tới bộ điều khiển ứng dụng trong Rails 3?

home/autocomplete_category_name 

và bây giờ cần phải có nhà lấy ra và đường dẫn từ:

home_autocomplete_category_name_path 

tới:

autocomplete_category_name_path 

Có ai có ý tưởng gì không? Vẫn còn học hỏi những điều khó hiểu của Rails nên đây là một kết thúc chết cho tôi ngay bây giờ.

Cảm ơn.

+0

Tốt nhất nên đăng mã thực tế RoR hiện tại cho tuyến đường đang được đề cập cũng như URL mà bạn đang nhắm mục tiêu. – jschorr

+0

Ngoài ra, hãy bao gồm các tuyến đường hiện tại của bạn bằng cách gõ 'rake routes' tại bàn điều khiển trong thư mục dự án gốc của bạn. – raidfive

Trả lời

9

URL này không xạ trực tiếp đến ApplicationController - chỉ lớp con của nó.

Bạn cần chuyển cuộc gọi đến autocomplete vào bộ điều khiển khác. Vị trí của biểu mẫu sẽ không tạo sự khác biệt, miễn là bạn đang đi đúng đường dẫn khi bạn xác định text_field

+0

Tôi đã kết thúc làm chính xác như bạn đã nói, nó không phải là một giải pháp hùng hồn nhưng nó hoạt động, cảm ơn! –

+3

Có thể định tuyến đến ApplicationController nếu bạn muốn - chỉ chống lại quy ước của mọi thứ – Pavling

+0

nếu tôi muốn đặt làm đường dẫn gốc của ứng dụng? –

0

thử một cái gì đó giống như

match "home/autocomplete_category_name", "home#autocomplete_category_name", :as => "autocomplete_category_name" 
27

Bài đăng cũ của bạn, nhưng câu trả lời được chấp nhận là sai. Mặc dù tinh thần của nó là đúng - bạn có lẽ nên di chuyển phương pháp của bạn đến một bộ điều khiển thích hợp hơn; nhưng nếu bạn nhấn mạnh trên có phương pháp trong application_controller.rb

# routes.rb 
match '/some_route', to: 'application#some_route', as: :some_route 

... di chúc đường đến phương pháp 'some_route' trong application_controller.rb.

6

hoại khác nhưng có một cách thân thiện DRY hơn để làm điều này, so với giải pháp pavling của

get :autocomplete_category_name, controller:"application" 

Tôi đã cố gắng (hôm qua) để di chuyển nó tới bộ điều khiển ứng dụng để cố gắng sử dụng lại mã tốt hơn và không buộc nó vào một bộ điều khiển cụ thể. Chỉ ngày hôm nay tôi mới nhận ra rằng không có ý nghĩa, vì bộ điều khiển được sử dụng để trả lời cuộc gọi này sẽ là một đối tượng hoàn toàn khác với bộ điều khiển hiển thị chế độ xem ..

+1

Hoạt động tốt cho các cuộc gọi chung không phải là bộ điều khiển cụ thể. –

1

Sử dụng Rails 4, bạn phải sử dụng, không khớp ...

# routes.rb 
get '/autocomplete_category_name', to: 'application#autocomplete_category_name', as: :autocomplete_category_name 
+0

bạn không * có * để ... bạn * có thể * thêm tùy chọn 'qua:'. – Pavling