如何解决使用刺激反射创建一个赞按钮 商务舱喜欢班级用户类business/show.html.erb
商务舱
class Business < ApplicationRecord
.........
belongs_to :user
has_many :likes
喜欢班级
class Like < ApplicationRecord
belongs_to :user
belongs_to :business
.....
用户类
class User < ApplicationRecord
has_many :likes
has_many :businesses
....
business/show.html.erb
<%= button_tag "Like",data: {reflex: "click->Likes#like",id: @business.id} %>
class LikesReflex < ApplicationReflex
def like
business = Business.find(element.dataset[:id])
business.likes.find_or_create_by(user: current_user)
......
我需要帮助来设置 likeReflex 控制器。 我希望登录用户喜欢业务并将其添加到他们的 user.likes
解决方法
这就是我在 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
一种更安全的常见模式是使用已签名的全局 ID,然后您可以创建一些更像关注点的东西:
<%= button_tag "Like",data: {reflex: "click->Likes#create",sgid: @post.to_sgid_param }
然后你有一个反射类:
class LikesReflex < ApplicationReflex
def create
likeable = GlobalID::Locator.locate_signed(element.dataset[:sgid])
likeable.likes.find_or_create_by(user: current_user)
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。