Ho una pagina di ricerca nella mia app, dove c'è un modulo di ricerca Ajax. Il modulo di ricerca funziona correttamente, passa i parametri al modello per filtrare la ricerca e il modello restituisce una raccolta di risultati. Alla ricerca di invio, i risultati @ vengono visualizzati sulla pagina. Ogni @result ha quindi un collegamento ad un'azione su di esso, come:Rails link_to con remote: true processing html invece di js dopo l'aggiornamento della pagina
<%=link_to "Message", message_user_path(:id => user.id), :remote => true%>
Dove questa azione nel controller è:
respond_to :js, :html
def message
@user_id = params[:id]
@user = User.find_by_id(@user_id)
respond_to do |format|
format.html
format.js
end
end
e questo risponde con message.js.erb, che innesca un pannello di messaggistica per far apparire un messaggio all'utente. Tutto questo funziona correttamente, controllando il registro vedo la giusta richiesta GET inviata, e il formato corretto in lavorazione:
Started GET "https://stackoverflow.com/users/3/message"
Processing by UsersController#message as JS
Tuttavia, se mi aggiorna la pagina e cercare di fare clic sul link stesso che stava lavorando prima , Ottengo il modello di errore mancante. Controllando il log, vedo che ora ci sono due richieste inviate, prima un html quindi la stessa richiesta js.
Started GET "https://stackoverflow.com/users/4/message"
Processing by StudentsController#message as HTML
...
Completed 406 Not Acceptable in 3ms (ActiveRecord: 1.0ms)
Started GET "https://stackoverflow.com/users/4/message"
Processing by StudentsController#message as JS
La richiesta html genera l'errore del modello mancante. Qualcuno sa perché l'aggiornamento della pagina fa sì che le rotaie tentino di rispondere con una richiesta html a un collegamento remoto?
EDIT: routes.rb
resources :students do
member do
get 'message'
end
end
remove 'respond_to: js,: html' nel controller, non è necessario ne hai bisogno – Thanh
puoi, infatti, rimuovere 'html' nei tuoi formati processabili, o forzare il link a chiamare js:' link_to "Message", message_user_path (: id => user.id,: format =>: js),: remote => true' –
oh, e potresti avere problemi con la cache del browser. Hai controllato se il codice html reale è cambiato quando hai aggiornato la pagina? –