Rails link_to avec remote: true html de traitement au lieu de js après l'actualisation de la page
J'ai une page de recherche dans mon application, où il y a un ajax formulaire de recherche. Le formulaire de recherche fonctionne correctement, passant des paramètres du modèle pour filtrer la recherche, et le modèle de retourner une collection de résultats. Lors de la recherche, de soumettre, @les résultats sont affichés sur la page. Chaque @résultat a ensuite un lien vers une action sur elle, comme:
<%=link_to "Message", message_user_path(:id => user.id), :remote => true%>
Où cette action dans le contrôleur est:
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
et cela répond avec le message.js.erb, qui déclenche un panneau messagerie pop up avec un message à l'utilisateur. Tout cela fonctionne correctement, vérifier le journal, je vois le bon requête get envoyé, et le bon format en cours de traitement:
Started GET "/users/3/message"
Processing by UsersController#message as JS
Cependant, si j'actualise la page et essayez de cliquer sur le même lien qui fonctionnait avant, j'obtiens l'erreur de Modèle est Manquant. Vérifier le journal, je vois que maintenant il y a deux demandes envoyées, d'abord en html puis le même en js demande.
Started GET "/users/4/message"
Processing by StudentsController#message as HTML
...
Completed 406 Not Acceptable in 3ms (ActiveRecord: 1.0ms)
Started GET "/users/4/message"
Processing by StudentsController#message as JS
La demande html jette le manque de modèle d'erreur. Personne ne sait pourquoi l'actualisation de la page provoque des rails pour tenter de répondre à une demande html pour un lien distant?
EDIT: itinéraires.rb
resources :students do
member do
get 'message'
end
end
source d'informationauteur David Harbage
Vous devez vous connecter pour publier un commentaire.
Votre
app/assets/javascripts/application.js
contenir?
Et votre erb contient
<%= javascript_include_tag "application" %>
?J'étais juste aux prises avec un problème comme cela pendant des HEURES et la dernière de ces deux points fixes; j'ai vu le premier point mentionné dans certaines autres questions donc je vais le répéter ici.
Espère que ça aide.
(Le crédit où il est dû)
Ce solveur pour moi a été l'ajout d' :format => "js"
Donc dans votre cas:
En général, lorsque vous utilisez
link_to
sur un bouton particulier, ou alors, lorsque vous appuyez sur le bouton,as js
demande est à envoyer au contrôleur, mais aussi de recherche respectifs .js.erb fichier et ainsi de suite.