Создайте кнопку "Нравится" с помощью Stimulus Reflex

есть ли какое-нибудь руководство о том, как создать кнопку «Нравится» со стимулом или стимульным рефлексом. Что-то для замены большинства драгоценных камней. Спасибо

1 ответ

Вот как я бы реализовал кнопку «Нравится» в StimulusReflex.

В шаблоне представления:

      <%= button_tag "Like", data: {reflex: "click->Posts#like, id: @post.id} %>

В вашем классе рефлексов:

      class PostsReflex < ApplicationReflex
  def like
    post = Post.find(element.dataset[:id])
    post.likes.find_or_create_by(user: current_user)
  end
end

Распространенный шаблон , который более безопасен, - использовать подписанные глобальные идентификаторы , тогда вы можете создать что-то, что больше похоже на проблему:

      <%= button_tag "Like", data: {reflex: "click->Likes#create", sgid: @post.to_sgid_param } 

Тогда у вас есть класс Reflex, например:

      class LikesReflex < ApplicationReflex
  def create
    likeable = GlobalID::Locator.locate_signed(element.dataset[:sgid])
    likeable.likes.find_or_create_by(user: current_user)
  end
end  
Другие вопросы по тегам