【发布时间】:2013-04-05 08:15:29
【问题描述】:
我正在学习 Rails 开发,并且正在构建一个类似于 reddit 的应用程序,通过对 cmets 和帖子进行投票来帮助学习。我已经对投票进行了 Ajax 化,现在在我的本地机器上,当我向上或向下投票时,它会发送两个请求并在任一对象上创建两个投票。这些投票可以在我的投票表中查看。
这只发生在 Firefox(不是 Chrome 或 IE)中,而且它只发生在我的本地机器上(在 Heroku 中没问题)。我用 Firebug 验证它正在发送两个请求,但我就是不知道为什么。我不相信我的资产管道造成了麻烦,因为那里没有太多东西。
这只是在我修改了我的投票行为(从每次投票时重新加载页面到使用 Ajax 显示投票总数)后才开始的。请注意,用户现在可以根据需要多次投票
我的代码在 github 上:https://github.com/hellomcfly/tl_postit2
我的应用在 Heroku 上:http://fathomless-waters-1981.herokuapp.com
我不知道什么代码会有所帮助,但这是我的 PostsController 中的内容:
def vote
@vote = Vote.create(voteable: @post, user: current_user, vote: params[:vote])
respond_to do |format|
format.html do
if @vote.vote == false
flash[:alert] = "Downvote tallied!"
redirect_to :back
else
flash[:success] = "Upvote tallied!"
redirect_to :back
end
end
format.js
end
end
这是我的帖子#index 模板中的相关代码:
Net votes: <span id="post_<%=post.id%>_votes"><%= post.net_votes %></span>
<ul>
<li><%= link_to "Vote Up", vote_post_path(post, vote: true), method: 'post', remote: true %></li>
<li><%= link_to "Vote Down", vote_post_path(post, vote: false), method: 'post', remote: true %></li>
</ul>
这里是 vote.js.erb 代码:
$("#post_<%= @post.id %>_votes").html(<%= @post.net_votes %>);
感谢您的帮助。
【问题讨论】:
-
在这个线程的帮助下修复:stackoverflow.com/questions/4231885/…(我发誓我到处寻找一个预先存在的线程)。
标签: ruby-on-rails ajax firefox