14

Estoy usando gem rails3-jquery-autocomplete y no tuve problemas, sin embargo ahora he movido mi formulario de autocompletar a la plantilla de la aplicación y por lo tanto las llamadas ajax están siendo procesadas por el controlador de la aplicación, por lo que mis rutas han cambiado a partir de:¿Cómo enrutas una acción al controlador de la aplicación en Rails 3?

home/autocomplete_category_name 

y ahora es necesario tener la casa eliminado y el camino de:

home_autocomplete_category_name_path 

a:

autocomplete_category_name_path 

¿Alguien tiene alguna idea? Todavía estoy aprendiendo los pormenores de Rails, así que este es un callejón sin salida para mí en este momento.

Gracias.

+0

Lo mejor sería publicar el código actual de RoR para la ruta en cuestión, así como la URL a la que se dirige. – jschorr

+0

Además, incluya sus rutas actuales escribiendo 'rake routes' en la consola en su directorio de proyecto raíz. – raidfive

Respuesta

9

URL no se asignan directamente a ApplicationController - sólo subclases de la misma.

Debe mover la llamada a autocomplete a otro controlador. La ubicación del formulario no debe marcar la diferencia, siempre y cuando esté pasando la ruta correcta cuando defina su text_field

+0

He terminado haciendo exactamente lo que dijo, no es una solución elocuente, pero funciona, ¡gracias! –

+3

Es posible enrutar a ApplicationController si lo desea, solo en contra de la convención de cosas – Pavling

+0

, ¿qué ocurre si quiero establecer eso como mi ruta raíz de la aplicación? –

0

intentar algo así como

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

Publicación anterior, pero la respuesta aceptada es incorrecta. Aunque su espíritu es correcto, probablemente debas mover tu método a un controlador más apropiado; pero si usted insiste en tener el método de application_controller.rb

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

... encaminará al método 'some_route' en application_controller.rb.

6

Otra necro, pero hay una manera más amigable SECO a ello, en comparación con la solución de pavling

get :autocomplete_category_name, controller:"application" 

yo estaba tratando (ayer) para moverlo al controlador de aplicaciones para tratar de reutilizar el código mejor y no átelo a un controlador específico. Solo hoy me di cuenta de que no tiene sentido, ya que el controlador utilizado para responder a esta llamada va a ser un objeto completamente diferente del controlador que representa la vista de todos modos.

+1

Funciona muy bien para llamadas genéricas que no son específicas del controlador. –

1

Usando Rails 4, debes usar get, not coincidencia ...

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

no * tiene * para ... usted * puede * agregar una opción 'vía:'. – Pavling

Cuestiones relacionadas