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 控制台中的一些错误) - 但是当我重新加载页面时 - 更新了更新,我看到了 norml 结果 - 我认为我在重定向时犯了一些错误或者我不知道

请帮忙

4

2 回答 2

0

改变

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

to if vote.save respond_to do |format|

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

虽然不确定

于 2012-09-20T11:29:20.973 回答
0

您的 ajax 代码将出现在 format.js 块中。您可以在其中更新显示排名的 html。

于 2012-09-20T11:32:25.420 回答