Я отправляю запрос на удаление через ссылку на тег привязки и использую: remote => true, чтобы отправить его через JS для использования jQuery. Я сделал это в двух других случаях, которые идентичны этому, без проблем на всех. Но по какой-то причине этот вызывает проблемы - каждый раз, когда я отправляю сообщение, я получаю сообщение об ошибке 406 Not Acceptable.
ссылка для уничтожения
content_tag( :p, link_to("+#{vote.weight}", unvote_path(vote), :method => :delete, :remote => true ), :class => "chosen" )
routes.rb
delete "/unvote" => "votes#destroy", :as => :unvote
votes_controller.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
возвращает содержимое
Есть идеи, почему это не так, как в других моих примерах? Я весь день бился с этим и не могу понять.