Ruby on rails 从视图中隐藏数据库中的信息。-轨道

Ruby on rails 从视图中隐藏数据库中的信息。-轨道,ruby-on-rails,ruby,Ruby On Rails,Ruby,我现在有一个表,它显示了用户的一系列属性。这是我的问题。每个人都有能力加入一个小组,但在某些情况下,一个人可以在没有加入小组的情况下进入表格。为了让阅读该表的用户更清楚,我只想从表中隐藏未注册组的每个人。这比我预想的要复杂一些。为了更好地理解,我将展示一些代码和屏幕截图 正如您所看到的,若一个人并没有组,则不会显示在表中 我正在尝试创建一个方法,并在呈现表的控制器上调用它。人和群体是两种不同的模式,与HABTM有关联。我如何在ruby中说“若人员并没有组,则不显示在表中” 这是制作桌子的控制器

我现在有一个表,它显示了用户的一系列属性。这是我的问题。每个人都有能力加入一个小组,但在某些情况下,一个人可以在没有加入小组的情况下进入表格。为了让阅读该表的用户更清楚,我只想从表中隐藏未注册组的每个人。这比我预想的要复杂一些。为了更好地理解,我将展示一些代码和屏幕截图

正如您所看到的,若一个人并没有组,则不会显示在表中

我正在尝试创建一个方法,并在呈现表的控制器上调用它。人和群体是两种不同的模式,与HABTM有关联。我如何在ruby中说“若人员并没有组,则不显示在表中”

这是制作桌子的控制器

  <table class="table table-striped">
<thead>
  <tr>
    <th><%= sortable 'phone_number', 'Phone Number'%></th>
    <th><%= sortable 'subscribed', 'Subscribed'%></th>
    <th><%= sortable 'city' %></th>
    <th><%= sortable 'state' %></th>
    <th><%= sortable 'zip' %></th>
    <th><%= sortable 'country' %></th>
    <th><%= sortable 'created_at', "Joined" %></th>
    <th>Groups</th>

  </tr>
</thead>
  <tbody>
    <% @people.each do |person| %>
      <tr>
        <td><%= person.phone_number %></td>
        <td><%= person.subscribed? ? "Yes" : "No" %></td>
        <td><%= person.city %></td>
        <td><%= person.state %></td>
        <td><%= person.zip %></td>
        <td><%= person.country %></td>
        <td><%= time_ago_in_words person.created_at %> ago</td>
        <td><%= person.groups.order(:id).pluck(:name).to_sentence %></td>
      </tr>
    <% end %>
  </tbody>

组
以前

群模型

class Group < ActiveRecord::Base
 has_and_belongs_to_many :people
 has_and_belongs_to_many :messages
end
类组
贝隆模型

 class Person < ActiveRecord::Base
  has_many :deliveries
  has_and_belongs_to_many :groups
class-Person
这些选项是O(n^2),并将相当多的内容放入内存中,因此只要您对此满意,这些选项就很容易实现:

您有两个选项,一个用于视图:

<% @people.each do |person| %>
  <% next if person.groups.blank? %>
  <tr>
    <td><%= person.phone_number %></td>
    <td><%= person.subscribed? ? "Yes" : "No" %></td>
    <td><%= person.city %></td>
    <td><%= person.state %></td>
    <td><%= person.zip %></td>
    <td><%= person.country %></td>
    <td><%= time_ago_in_words person.created_at %> ago</td>
    <td><%= person.groups.order(:id).pluck(:name).to_sentence %></td>
  </tr>
<% end %>
这些选项是O(n^2),并在内存中插入了相当多的内容,因此只要您对此满意,这些选项就很容易实现:

您有两个选项,一个用于视图:

<% @people.each do |person| %>
  <% next if person.groups.blank? %>
  <tr>
    <td><%= person.phone_number %></td>
    <td><%= person.subscribed? ? "Yes" : "No" %></td>
    <td><%= person.city %></td>
    <td><%= person.state %></td>
    <td><%= person.zip %></td>
    <td><%= person.country %></td>
    <td><%= time_ago_in_words person.created_at %> ago</td>
    <td><%= person.groups.order(:id).pluck(:name).to_sentence %></td>
  </tr>
<% end %>

你能给我们展示你的观点吗(你在哪里循环人-我猜?)?如果你在群体和人之间有任何关联,你也能展示吗?你能给我们展示你的观点吗(你在哪里循环人-我猜?)?如果你在群体和人之间有任何关联,你也可以展示一下吗?谢谢,视图中的一个可以工作,但我想把它过滤到控制器上。但是当我尝试你建议的方法时,它会给我一个错误“keep_if”没有定义?谢谢,视图中的方法可以工作,但我想将它过滤到控制器。但是当我尝试你建议的方法时,它给了我一个错误,没有定义“keep_if”?
@people = Person.order(sort_column => sort_direction).to_a.keep_if { |person| person.groups.present? }