Рендер JS вьюхи для AJAX Rails

103
05 февраля 2021, 04:50

У меня есть show.html.haml вьюха, которая показывает количество лайков на посте

= @post.likes.count

В контроллере в экшене create прописал:

respond_to do |format|
  format.js { render template: 'posts/show.js.haml' }
  format.html { redirect_to post_path(@post) }
end

При рендере html, редиректит на этот же пост, т.е. просто обновляется страница для отображения нового лайка. Как мне сделать отправку через JS, чтобы не нужно было обновлять всю страницу?

Я создал show.js.haml для рендера формата js, но что туда писать?

Для баттона Like добавил remote: true, чтобы вызывался ajax:

= link_to 'Like', post_likes_path(@post), method: :post, class: 'btn btn-outline-dark', remote: true
Answer 1

Я переместил строчку

= @post.likes.count

в новый паршиал _likescount.html.haml.

В show.js.erb добавил код для рендера этого паршиала на своей вьюхе:

var likes = document.querySelector("#likes");
likes.innerHTML = "<%= j render partial: 'posts/likescount' %>";

В контроллере likes_controller.rb в конец экшена create:

respond_to do |format|
  format.js { render 'posts/show.js.erb' }
end

Таким образом, при создании лайка, экшен create рендерит show.js.erb, который отдельно рендерит @post.likes.count во вьюху show.html.haml.

READ ALSO
Как сделать прокрутку div на jquery?

Как сделать прокрутку div на jquery?

я по нажатию на один блок div, динамически создаю текстовый блок в котором сообщения, и соответственно есть прокрутка! как сделать чтоб этот...

84
Как получить картинку из input в electronjs

Как получить картинку из input в electronjs

Я почти не работал с nodejs а тем более с electronjsПоэтому не понимаю как происходит передача файлов

96
Позиционирование. Текст на фото

Позиционирование. Текст на фото

Есть фото и текстФото превью, поэтому размер всегда одинаковый

106
Чем отличается -child от -of-type?

Чем отличается -child от -of-type?

Пытался понять их различия, но так и не понял, зачем их использоватьНапример, li:nth-child(odd) и li:nth-of-type(odd)

151