我有一个发票模型,它有一个paid boolean属性。帐户和发票之间有关联,我只想在视图中显示未付发票。
我用这个来显示所有的发票:

<table class="table">
  <thead>
    <tr>
      <th>Invoice Number</th>
      <th>Invoice Date</th>
      <th>Invoice Total</th>
    </tr>
  </thead>

  <tbody>
    <% @account.invoices.each do |invoice| %>
      <tr>
        <td><%= invoice.id%> </td>
        <td><%= invoice.created_at.time.to_formatted_s(:long)%> Zulu </td>
        <td><%= invoice.total %></td>
      </tr>
    <% end %>
  </tbody>

但我不确定如何将结果限制在只有paid为零的发票才会显示的地方。我试过:<% @account.invoices.each do |invoice| unless @account.invoices.paid == 'nil' %>,但打错了。很明显我的语法错了。有什么建议吗?

最佳答案

在这种情况下可以使用named scope
unpaid模型中创建了invoices作用域:

scope :unpaid, -> { where( paid: [nil, false] ) }

在视图中使用它,如下所示:
<% @account.invoices.unpaid.each do |invoice| %>

关于ruby-on-rails - 如果不做的话,每个都做-Rails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45393338/

10-12 16:22