首页 > 解决方案 > 用户会话的逻辑

问题描述

user_signed_in?方法来自设计 Gem。如果用户已登录并且有评论,我希望显示Delete Comment链接。如果没有评论,我希望链接不存在。展示页面示例

这是代码:

<% if user_signed_in? %>
  <p><%= link_to 'Delete Comment', [comment.pic, comment], method: :delete, class: "btn btn-danger", data: { confirm: "Are you sure?" } %></p>
<% end %>

我在显示页面的逻辑上遇到了一些问题。如果用户已登录,Delete comment即使没有评论也会显示该链接。如果我发表评论,则链接会出现在每条评论下方,并带有一个未链接到任何特定评论Delete Comment的额外链接。Delete Comment

请帮忙。

标签: ruby-on-railsruby

解决方案


显示删除链接是因为您没有测试评论是否存在。您可以执行以下操作,例如为空评论或评论是否存在添加测试:

<% if user_signed_in? && comment[:body].present?>
    <p><%= link_to 'Delete Comment', [comment.pic, comment], 
                   method: :delete, class: "btn btn-danger", 
        data: { confirm: "Are you sure?" } %></p>
<% end %>

推荐阅读