【问题标题】:Why is Rails app sending two Ajax requests instead of one, only when using Firefox and on my local server?为什么 Rails 应用程序仅在使用 Firefox 并在我的本地服务器上发送两个 Ajax 请求而不是一个?
【发布时间】:2013-04-05 08:15:29
【问题描述】:

我正在学习 Rails 开发,并且正在构建一个类似于 reddit 的应用程序,通过对 cme​​ts 和帖子进行投票来帮助学习。我已经对投票进行了 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 %>);

感谢您的帮助。

【问题讨论】:

标签: ruby-on-rails ajax firefox


【解决方案1】:

我在类似的情况下遇到了这个问题,它与 public/assets 中的预编译资产有关。这导致 application.js 被加载两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多