1

アンカータグリンクを介して削除リクエストを送信し、: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によって返されるコンテンツにあるようです。

これが他の実際の例とは異なる動作をしている理由はありますか?私は一日中これに対して頭を殴っていて、それを理解することができません。

4

1 に答える 1

0

破棄リンクに: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 _

于 2011-02-07T13:16:33.623 に答える