私のアプリには、ajax検索フォームがある検索ページがあります。検索フォームは適切に機能し、モデルにパラメータを渡して検索をフィルタリングし、モデルが結果のコレクションを返します。検索を提出すると、@resultsがページに表示されます。各@resultはその後のようなその上にアクションへのリンクを、持っている:Rails link_to with remote:ページリフレッシュ後にjsの代わりにtrueを処理するhtml
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
、これがトリガーされ、message.js.erbで応答:コントローラーでこのアクションがある
<%=link_to "Message", message_user_path(:id => user.id), :remote => true%>
ユーザーにメッセージをポップアップ表示させることができます。このすべては、私が正しいget要求が送られた参照ログをチェックし、正しく機能しているし、正しいフォーマットが処理されている:
Started GET "https://stackoverflow.com/users/3/message"
Processing by UsersController#message as JS
しかし、私はページを更新した場合と、前に働いていた同じリンクをクリックしてください、「テンプレートがありません」というエラーが表示されます。ログを確認すると、今は2つのリクエストが送信されていることがわかります。最初はhtml、次に同じ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
htmlリクエストによって欠落しているテンプレートエラーが発生します。誰かがページをリフレッシュすると、レールがhtmlリクエストでリモートリンクに応答しようとする原因が分かりますか?
EDIT:あなたのapp/assets/javascripts/application.js
は
//= require jquery
//= require jquery_ujs
をroutes.rbを
resources :students do
member do
get 'message'
end
end
'respond_toを削除:JS、:あなたのコントローラでhtml'、そうしないとそれを必要とする – Thanh
実際には、あなたの処理可能なフォーマットで 'html'を削除するか、リンクがjs:' link_to "Message"、message_user_path(:id => user.id、:format =>:js) => true' –
ああ、単純なブラウザキャッシュの問題があるかもしれません。ページをリフレッシュしたときに実際のHTMLコードが変更されたかどうか確認しましたか? –