アンカータグリンクを介して削除リクエストを送信し、:remote => trueを使用してJS経由で送信し、jQueryを使用しています。私はこれと同じ他の2つのインスタンスでこれを実行しましたが、まったく問題はありません。しかし、何らかの理由で、これが問題を引き起こしています-送信するたびに、406NotAcceptableエラーが発生します。
破棄リンク
content_tag( :p, link_to("+#{vote.weight}", unvote_path(vote), :method => :delete, :remote => true ), :class => "chosen" )
ルート.rb
delete "/unvote" => "votes#destroy", :as => :unvote
投票_コントローラー.rb
def destroy
@vote = Vote.find(params[:format])
if !current_user.owns(@vote)
flash[:alert] = "You cannot remove votes that aren't yours!"
end
@idea = @vote.idea
@vote.destroy
respond_with @vote do |format|
format.js
format.html { redirect_to category_idea_path(@idea.category, @idea) }
end
end
destroy.js.erb
$('#vote_buttons').append('<%= escape_javascript get_vote_buttons(@idea.category, current_user, @idea) %>');
これは、 new.js.erbにある行とまったく同じであり、正常に機能します(ただし、必要なものが正確に返されないことを除けば、少なくとも実行され、正しく追加されます)。
application.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript");
},
cache: false
});
そして、私が正しく理解していれば、ヘッダーを正しく設定する必要があるapplication.jsにそれがあります。
また、リンクが削除機能を正しく実行していることに注意してください。ページを手動で更新すると、投票が削除されました。唯一の問題は、destroy.js.erbによって返されるコンテンツにあるようです。
これが他の実際の例とは異なる動作をしている理由はありますか?私は一日中これに対して頭を殴っていて、それを理解することができません。