2016-06-21 147 views
0

我正在開發一個應用程序,用戶可以在其中心(如)故事。我試圖用ajax來實現它。我有一個StoryController與心臟行動。每當心臟(如)被點擊時,我已經用heart.js.erb做出了迴應併發送了一個請求。我正在努力更新用戶點擊心臟鏈接時的心臟數量。但是我得到的是通過ajax的無限請求。以下是心臟行動的片段。ajax上的無限請求

# Give your heart to someone 
    def heart 
    respond_to do |format| 
     format.js 
     format.html 
    end 
    end 

和AJAX請求是:

$('#heart-story-<%= j params[:id]%>').html('<%= @hearts %>') 
$.post("/stories/<%= j params[:id]%>/heart", <%= j params[:id] %>) 
console.log("<%= j params[:id] %>") 

那是什麼我得到無限的請求可能的原因? 這條路線是:

#Stories 
resources :stories, only: [:show, :create, :destroy] do 
member do 
    get :heart, :unheart 
    post :heart, :unheart 
end 
# Comments 
resources :comments, only: [:index, :new, :create, :destroy] 
end 

回答

0

如果指定按照heart.js.erb代碼,那麼這將是無限的:

$('#heart-story-<%= j params[:id]%>').html('<%= @hearts %>') 
$.post("/stories/<%= j params[:id]%>/heart", <%= j params[:id] %>) 
console.log("<%= j params[:id] %>") 

發佈採購信息應該只按一下按鈕觸發一次穿上」 t在heart.js.erb中使用它

+0

謝謝。我會給它一個鏡頭。 – veekram

0

只要對此操作的AJAX請求成功,就會呈現heart.js.erb視圖。您應該將其視爲您的AJAX請求的回調,而不是您爲AJAX請求編寫邏輯的地方。在這個視圖中,您必須實現在成功的AJAX請求後更新UI的邏輯。

您應該使用遠程鏈接,如:

<%= link_to '<3', heart_story_path(@story), remote: true %> 

然後在你heart.js.erb你應該刪除的AJAX調用。它應該看起來像這樣:

$('#heart-story-<%= j params[:id]%>').html('<%= @hearts %>') 
+0

所以我應該從js.erb中刪除發佈請求? – veekram