Ruby on Rails 5 - 复制“删除”链接

时间:2017-04-27 07:43:14

标签: ruby-on-rails ruby ruby-on-rails-5

这是我的问题的图片---> Duplicate Delete Links Picture

我有两条删除链接的评论。

这是我如何呈现评论表格和部分评论的顺序:

<h2>Comments</h2>
<%= render 'comments/form' %>
<%= render @recipe.comments %>

这是 _form.html.erb

的代码
<%= form_for([@recipe, @recipe.comments.build]) do |f| %>
     <p><%= f.label 'Comment' %> <br> <%= f.text_area :comment %></p>
     <p><%= f.submit 'Post' %></p>
<% end %>

这是 _comment.html.erb

的代码
<div class="show-text-formatting">
     <p><strong><%= comment.name %></strong></p>
     <p><%= comment.comment %></p>

     <%= link_to 'Delete', [comment.recipe, comment], method: :delete, 
           data: { confirm: 'Are you sure want to delete this comment?' } %>
</div>

第一个删除链接的扩展名为: / recipes / 10 / comments / 1(1为注释ID#)

另外,当我将鼠标悬停在第二个删除链接上时,扩展名为: / recipes / 10 / comment

之间的区别在于第二个删除链接的扩展程序具有评论ID

我知道通过切换

的顺序
    <h2>Comments</h2>
    <%= render 'comments/form' %>
    <%= render @recipe.comments %>

    <h2>Comments</h2>
    <%= render @recipe.comments %>
    <%= render 'comments/form' %>

会解决我的问题,但我希望表单在评论之前出现。

编辑:

第二个删除链接实际上不是“第二个”删除链接。它是null对象的删除链接。我仍然不知道如何摆脱它。

2 个答案:

答案 0 :(得分:0)

试试这个。为您的评论设置订单。像这样:

<h2>Comments</h2>
<%= render 'comments/form' %>
<%= render @recipe.comments.order(created_at: :DESC) %>

那应该可以解决你的问题。我有同样的问题,它对我有用。

答案 1 :(得分:-1)

如果您确定它是无对象,为什么不添加触发器。我的意思是我们可以在渲染之前检查对象是否为零。