我正在构建一种Facebook克隆,该项目的要求之一是能够“点赞”帖子。
我很喜欢(我也在用户认证上使用了devise fwiw)。但是,当我尝试闪烁显示某个用户已经喜欢某个帖子(因为您不能多次喜欢)时,什么也没发生。
我的控制器代码:
LIKED
它的工作原理是位于用户的“主页”上,浏览其所有帖子,并在每个帖子上都带有“喜欢”选项。 (喜欢确实有效,但认为这值得注意)。
如果我只做LIKED
,则刷新页面即可使用,但目前不执行任何操作。
“赞”链接如下所示:
def like
post = Post.find(params[:post_id])
puts post
like = post.likes.new(user_id: current_user.id)
if like.save
#nothing for now
else
flash.now[:alert] = "You have already liked that post"
end
end
答案 0 :(得分:2)
在Rails中,有一个gem可用于ajax调用Flash消息 Toaster gem
在application_helper.rb
中创建一个方法
def custom_bootstrap_flash
flash_messages = []
flash.each do |type, message|
type = 'success' if type == 'notice'
type = 'error' if type == 'alert'
text = "
<script>
$(function () {
toastr.#{type}(\"#{message}\");
});
</script>
"
flash_messages << text.html_safe if message
end
flash_messages.join("\n").html_safe
end
将其包括在您的布局application.html.erb
<%= custom_bootstrap_flash %>
然后在您的action.js.erb
中使用烤面包机方法显示烤面包消息
toastr.success('Success.')
toastr.error('error')
我希望这是您正在寻找的东西。
答案 1 :(得分:1)
rails上的flash方法仅在成功重定向后显示。如果要在同一页面上显示消息,最好使用JS显示消息。