仅呈现 Rails 中的授权(设计)用户数据,没有多余的空 space

Rendering only authorized (Devise) user data in Rails without excess empty space

我正在尝试创建一个待办事项应用程序,它允许用户创建列表,然后在每个列表下创建 "todo" 个项目。但是,我希望每个用户 能够看到他或她的列表。虽然我已经能够使用 current_user 帮助器部分解决它,但索引页面显示 空 space,其中隐藏了其他用户列表。

请在下面找到我 todo_lists 视图中 index.html.erb 页面的代码。

<% @todo_lists.each do |todo_list| %>
  <div class="index_row clearfix">
    <% if todo_list.user == current_user %>
        <h2 class="todo_list_title"><%= link_to todo_list.title, todo_list %></h2>
        <p class="todo_list_sub_title"><%= todo_list.description %></p>
        <p><%= todo_list.user.first_name %></p>
    <% end %>
  </div>
<% end %>


<div class="links">
  <%= link_to "New Todo List", new_todo_list_path %>
</div>

这是我在 Github 上的回购,如果您需要查看更多代码:https://github.com/jramoscolon/todo

有没有办法隐藏这些空 space 以及不匹配的待办事项?

如果您的索引视图是用户特定的,那么您想要的实例变量也应该是用户特定的。

而不是@todo_lists = ToDoList.all

使用您的has_many/belongs提供的current_user.todo_lists功能

鉴于您当前的视图代码,即使 todo_list.usercurrent_user 不匹配,您也会不加选择地发出 <div class="index_row clearfix"> 元素。只需将整个 <div> 移动到 current_user 检查之外,如下所示:

<% @todo_lists.each do |todo_list| %>
  <% if todo_list.user == current_user %>
    <div class="index_row clearfix">
        <h2 class="todo_list_title"><%= link_to todo_list.title, todo_list %></h2>
        <p class="todo_list_sub_title"><%= todo_list.description %></p>
        <p><%= todo_list.user.first_name %></p>
    </div>
  <% end %>
<% end %>

这样,所有这些空 <div> 元素都不会包含在页面中。这应该清理所有空 space.