2012-11-13 11 views
9

私のアプリには、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 
+0

'respond_toを削除:JS、:あなたのコントローラでhtml'、そうしないとそれを必要とする – Thanh

+0

実際には、あなたの処理可能なフォーマットで 'html'を削除するか、リンクがjs:' link_to "Message"、message_user_path(:id => user.id、:format =>:js) => true' –

+0

ああ、単純なブラウザキャッシュの問題があるかもしれません。ページをリフレッシュしたときに実際のHTMLコードが変更されたかどうか確認しましたか? –

答えて

20

含まれていますか?

あなたのerbには<%= javascript_include_tag "application" %>が含まれていますか?

私はHOURSの問題に苦しんでいましたが、最後の2つのポイントはそれを修正しました。他のいくつかの質問で最初に述べたことを見ましたので、ここでそれを繰り返します。

希望に役立ちます。あなたが特定のボタンまたはそうでlink_toを使用するときは、ボタンを押したときに

Credit where credit's due)一般的に

+0

これは人生保護人です。よくやった。 –

+0

あなたの答えが良かったことを感謝します! – Rachel

0

、、、as js要求がコントローラに送信するだけでなく、それぞれの.js.erbファイルを検索しています等々。フォーマット=> "JS" あなたのケースでそう

を:追加された私のために何ソルバーそれを

4

<%=link_to "Message", message_user_path(:id => user.id, :format => "js"), :remote => true %> 
関連する問題