2016-06-21 3 views
0

Я работаю над приложением, в котором пользователь может писать истории (например). Я пытаюсь реализовать его с помощью ajax. У меня есть StoriesController с сердечным действием. Всякий раз, когда кликают сердце (например), я ответил 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

Представление heart.js.erb визуализируется всякий раз, когда запрос AJAX к этому действию будет успешным. Вы должны рассматривать его как обратный вызов для вашего запроса AJAX, а не то место, где вы пишете логику для вашего запроса AJAX. В этом представлении вы должны реализовать логику, которая обновляет пользовательский интерфейс после успешного запроса AJAX.

Вы должны использовать удаленную ссылку, как:

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

Затем вы должны удалить вызов AJAX в вас heart.js.erb. Это должно выглядеть так:

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

Итак, я должен удалить запрос на отправку с js.erb? – veekram

Смежные вопросы