如何redirect_to“没什么”

时间:2014-03-02 03:17:20

标签: ruby-on-rails redirect ruby-on-rails-4 controller

我正在使用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>

2 个答案:

答案 0 :(得分:3)

最好的方法是发送head :no_contentrender 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操作。