喜欢评论Ajax错误

时间:2016-03-02 17:53:08

标签: javascript jquery ruby-on-rails ruby ajax

我正在使用" Acts As Votable"我的应用程序中的gem因为我想允许我的用户喜欢和不喜欢评论。到目前为止它一直运行良好,但现在我想实现Ajax来改进用户界面。

这是我的代码:

的routes.rb

mean(c(unlist(test[c("A", "B")]), test$C[test$Flag==1]), na.rm=TRUE)
#[1] 0.6666667

comments_controller.rb:

resources :articles do
    member do
      put "like", to: "articles#upvote"
    end
    resources :comments do
      member do
        get "like", to: "comments#upvote"
        get "dislike", to: "comments#downvote"
      end
    end
  end

_comment.html.erb:

def upvote
    if @comment.upvote_from current_user
      respond_to do |format|
        format.html { redirect_to(:back) }
        format.js
      end
    end
  end

  def downvote
    if @comment.downvote_from current_user
      respond_to do |format|
        format.html { redirect_to(:back) }
        format.js
      end
    end
  end

upvote.js.erb:

<span class="like-comment">
      <%= link_to like_article_comment_url(@article, comment), method: :get, remote: true do %>
        <span class="fa fa-thumbs-up" id="thumbs-up"> <%= comment.get_upvotes.size %></span>
      <% end %>
    </span>
    <p class="dislike-comment">
      <%= link_to dislike_article_comment_url(@article, comment), method: :get, remote: true do %>
        <span class="fa fa-thumbs-down" id="thumbs-down"> <%= comment.get_downvotes.size %></span>
      <% end %>

downvote.js.erb:

$('#thumbs-up').replaceWith("<%= j render comment.get_upvotes.size %>");

问题是当我点击喜欢/不喜欢按钮时,它不会更新喜欢/不喜欢的数量。但是,当我刷新页面时,它会更新喜欢/不喜欢的数量。我不知道为什么视图没有更新喜欢/不喜欢的数量。此外,我试图将文件更改为upvote.erb.js / downvote.erb.js,正如其他人的建议,但问题仍然存在。

*更新: 当我在firefox中打开网络控制台时,当我点击喜欢/不喜欢的时候,我看到了500个内部服务器错误。我搜索了与该错误相关的所有问题,但仍然无法确定我的代码有什么问题。

3 个答案:

答案 0 :(得分:0)

尝试将.js.erb中的文件重命名为.erb.js。 那是因为你的ruby代码必须先执行

答案 1 :(得分:0)

由于您在前端使用jquery,您可以将javascript文件重命名为.erb.js而不是.js.erb以优先处理erb预处理,或者您可以创建一个端点来检索该数据,以便您可以避免错误,也许你的ruby模型代码不会破坏前端的javascript,这也是通常在端点上提供数据的最佳实践。

答案 2 :(得分:0)

您是否定义了upvote / downvote的路线?

你应该尝试:

$('#thumbs-up').text("<%= j render comment.get_upvotes.size %>");
$('#thumbs-down').text("<%= j render comment.get_downvotes.size %>");