Rails - 在使用.present将行添加到表之前,尝试检查列是否为空?

时间:2016-01-01 00:23:41

标签: ruby-on-rails-4 ruby-on-rails-3.2

我有一张表格,显示处方清单。我想过滤掉没有"结束的处方"日期。我试图使用礼物?但没有运气。

  <% if @prescriptions.where(:ended => present?) %>
  <% @prescriptions.each do |prescription| %>
      <tr>
        <td><i class="fa fa-medkit"></i> <%= prescription.drug.friendly_name %></td>
        <td><%= prescription.dosage %></td>
        <td><i class="fa fa-calendar"></i> <%= prescription.started %></td>
        <td><i class="fa fa-calendar"></i> <%= prescription.ended %></td>
      </tr>
  <% end %>
  <% end %>

1 个答案:

答案 0 :(得分:0)

如果您指出了您正在获得的错误以及呈现此视图的控制器操作,那将会有所帮助。

您可以使用选择来过滤掉没有结束日期的处方,但更好的方法是在模型中设置范围。假设您有一个处方模型:

def self.unexpired
  where.not(ended: nil)
end

控制器可以调用此范围,例如

Prescription.unexpired