在Rails中仅渲染授权(设计)用户数据而没有多余的空白空间

时间:2016-06-30 20:46:54

标签: ruby-on-rails ruby devise authorization erb

我正在尝试创建一个todo应用程序,允许用户创建列表,然后在每个列表下“todo”项目。但是,我希望每个用户只能 才能看到他或她的列表。虽然我已经能够使用current_user帮助程序部分地解决它,但索引页面显示空白空间,其他用户列表被隐藏。

What it looks like in the browser

请在我的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

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

2 个答案:

答案 0 :(得分:0)

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

而不是@todo_lists = ToDoList.all

使用has_many /所属的current_user.todo_lists功能

答案 1 :(得分:0)

根据您当前的观看代码,即使<div class="index_row clearfix">todo_list.user不匹配,您也会不加选择地发出current_user元素。只需将整个<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>元素都不会包含在页面中。这应该清理所有空白区域。