406 Недопустимая ошибка в jQuery: удаленная => истинная ссылка - PullRequest
1 голос
/ 07 февраля 2011

Я отправляю запрос на удаление через ссылку на тег привязки и использую: 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

возвращает содержимое

Есть идеи, почему это не так, как в других моих примерах? Я весь день бился с этим и не могу понять.

1 Ответ

0 голосов
/ 07 февраля 2011

Вам не нужно добавлять: method =>: delete к вашей ссылке уничтожения? Также вы, вероятно, не хотите использовать new_category_idea_vote_path для генерации ссылки уничтожения, а вместо этого просто category_idea_vote_path

Вот так:

content_tag( :p, link_to("+#{i}", category_idea_vote_path(category, idea, :weight => i), :remote => true, :method => :delete ), :class => "valid" )

См. Этот пример:

  link_to("Destroy", "http://www.example.com", :method => :delete, :confirm => "Are you sure?")

на http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

...