2014-03-02 33 views
2

我正在使用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索引文件有一長串名單,如果有人「喜歡」它的頁面從重定向刷新,並且用戶已經失去了他的滾動位置。

我該如何屏蔽重定向?要做沒有什麼

筆者認爲:

<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> 

回答

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幫手。

+0

你能寫一下怎麼進入控制器動作嗎? –

+0

@TheMiniJohn當然! – methyl

+0

我認爲這打破了一些東西..類似的行動不再工作。有沒有其他方法? –

0

用戶如何進入這些功能呢?他們點擊一個按鈕?如果是這樣,請查看button_to。此外,這可能更適合作爲POST操作。

+0

是的,他們點擊它。我嘗試過,但它給了我相同的路由錯誤:沒有路由匹配[POST]「/ messages/18/like」 –

+0

而不是嵌套的路由,你可以有一個像'post'member /:id /喜歡',以'成員#喜歡'。或類似的規定。 –

+0

從我最近了解到,我將需要一個Ajax,jQuery解決方案來正確處理這個問題! –