14

Sto utilizzando il gem rails3-jquery-autocomplete e non ho avuto problemi con esso, tuttavia ora ho spostato il mio modulo di completamento automatico nel modello dell'applicazione e quindi le chiamate ajax vengono ora gestite dal controller dell'applicazione, quindi i miei percorsi sono cambiati da:Come si indirizza un'azione al controller dell'applicazione in Rails 3?

home/autocomplete_category_name 

e ora hanno bisogno di avere la casa rimosso e il percorso da:

home_autocomplete_category_name_path 

a:

autocomplete_category_name_path 

Qualcuno ha qualche idea? Sto ancora imparando i dettagli di Rails, quindi per me questo è un vicolo cieco.

Grazie.

+0

Sarebbe meglio pubblicare il codice effettivo di RoR corrente per il percorso in questione e l'URL che si sta prendendo di mira. – jschorr

+0

Inoltre, includi i tuoi percorsi correnti digitando 'rake routes' sulla console nella directory del progetto root. – raidfive

risposta

9

URL non corrispondono direttamente a ApplicationController - solo sottoclassi di esso.

È necessario spostare la chiamata su autocomplete in un altro controller. La posizione del modulo non dovrebbe fare la differenza, a condizione che passi il percorso corretto quando definisci il tuo text_field

+0

Ho finito per fare esattamente come hai detto tu, non è una soluzione eloquente ma funziona, grazie! –

+3

È possibile instradare a ApplicationController se si desidera, solo contro la convenzione delle cose – Pavling

+0

, cosa succede se si desidera impostarlo come percorso principale dell'applicazione? –

0

provare qualcosa di simile

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

Vecchio post, ma la risposta accettata è errata. Sebbene lo spirito di esso sia corretto, probabilmente dovresti spostare il tuo metodo su un controller più appropriato; ma se insistete per avere il metodo in application_controller.rb

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

... instraderà al metodo 'some_route' in application_controller.rb.

6

Un'altra necro, ma c'è un modo più DRY amichevole per fare questo, rispetto alla soluzione di pavling

get :autocomplete_category_name, controller:"application" 

cercavo (ieri) per spostarlo al controller dell'applicazione per cercare di riutilizzare il codice meglio e non legalo a un controller specifico. Solo oggi mi sono reso conto che non ha senso, dal momento che il controller usato per rispondere a questa chiamata sarà un oggetto completamente diverso rispetto al controller che mostra comunque la vista.

+1

Funziona alla grande per le chiamate generiche che non sono specifiche del controllore. –

1

Utilizzo di Rails 4, è necessario utilizzare get, non corrisponde ...

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

non * hai * per ... puoi * aggiungere * un'opzione 'via:'. – Pavling

Problemi correlati