我正在使用acts_as_votable。
所以我的路线看起来像这样:
resources :git do
member do
get :like
get :unlike
end
end
我没有创建文件like.html.erb
& unlike.html.erb
因为我不需要视图。
我喜欢的行动:
def like
@git = Git.find(params[:id])
@git.liked_by current_user
redirect_to :back
end
我的问题是,Git
索引文件有一个looooong列表,如果有人“喜欢”它,页面会从重定向刷新,并且用户已经丢失了他的滚动位置。
如何阻止重定向?只做没有?
我的观点:
<span><i class="fa fa-thumbs-up"></i> <%= link_to "Like", like_git_path(git) %></span>
<div class="b2-widget-count" style="display: inline-block">
<i></i><u></u><div class="b2-widget-val"><%= git.likes.size %></div>
</div>
答案 0 :(得分:3)
最好的方法是发送head :no_content
或render nothing: true
。我推荐第一个,因为第二个问题是jquery。
def like
@git = Git.find(params[:id])
@git.liked_by current_user
render text: @git.likes.size
end
将路线更改为POST。
然后,确保Gemfile中有gem jquery-rails
行。
将这两行添加到application.js
文件的顶部。
//= require jquery
//= require jquery_ujs
将此行添加到application.js
文件的底部:
$(document).ready(function(){
$('.like-button, .unlike-button').click(function(e){
e.preventDefault();
url = $(e.currentTarget).attr('href');
$.post(url).done(function(data){
$(e.currentTarget).closest('.b2-widget-val').html(data);
});
});
});
将相应的类(like-button, unlike-button
)添加到link_to
助手。
答案 1 :(得分:0)
用户如何进入这些功能?他们点击一个按钮吗?如果是,请查看button_to
。此外,这可能更适合作为POST操作。