我正在使用" 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个内部服务器错误。我搜索了与该错误相关的所有问题,但仍然无法确定我的代码有什么问题。
答案 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 %>");