2

私は ajax リクエストに問題があります:

私のアプリでは、単純なランク システムを構成しようとしていますが、それをセットアップしましたが、ランク ボタンをクリックすると、ページがリロードされ、ランクが更新されます。

ajaxでそれを理解するのを手伝ってください:

私はそれをしました:

posts/show.html.erb私はそれを持っています:

    <div id='vote_update'>
      <%= render 'vote/update' %>
    </div>

vote/_update.html.erb私が持っている:

<% if can? :update, Vote %>
    <%= form_for([@post, @post.vote], remote: true) do |f| %>
...
<%= f.submit "vote" %> 

vote/update.js.erb私が持っている:

$('#vote_update').html("<%= j render('vote/update') %>");

そして、vote_controller.rbには次のものがあります:

  def update
    post = Post.find(params[:post_id])
    vote = post.vote
...
    respond_to do |format|
        if vote.save
          format.html { 
            redirect_to post_path(post),
            :notice => "You vote counted!"
          }
          format.js
        end
    end
end

romete: true を削除すると、すべてが正常に動作します (ページをリロードすると、(:notice) 「投票がカウントされました!」が表示され、評価が更新されますが、remote: true を元に戻すと、何も表示されませんでした (firebug コンソールにいくつかの間違いがあります) )-しかし、ページをリロードすると-ratignが更新され、正常な結果が表示されました-リダイレクトでいくつかの間違いを犯したと思いますか、わかりません

助けてください

4

2 に答える 2

0

ajaxコードはformat.jsブロックで提供されます。ランクを表示しているHTMLを更新できます。

于 2012-09-20T11:32:25.420 に答える
0

変化する

respond_to do |format|
    if vote.save
      format.html { 
        redirect_to post_path(post),
        :notice => "You vote counted!"
      }
      format.js
    end
end

to ifvote.saverespond_to do | format |

      format.html { 
        redirect_to post_path(post),
        :notice => "You vote counted!"
      }
      format.js
    end
end

わからないけど

于 2012-09-20T11:29:20.973 に答える