簡體   English   中英

扁平哈希中的訪問/輸出值?

[英]Access/Output Values in Flattened Hash?

在我的控制器中,我有:

@invoices = current_user.account.clients.map(&:invoices).flatten

並且我想在index.html.erb中顯示這些值,當前我具有以下內容:

<% @invoices.each do |invoice| %>
    <tr>
        <td></td>
        <td><%= invoice.client.name %></td>
        <td><%= invoice.jobs.inspect %></td> #HERE IS WHERE I WANT START_DATE, etc
        <td><%= invoice.created_at %></td>
        <td><%= link_to "PDF", invoice_path(invoice, :format => :pdf)%></td>
        <td><%= link_to invoice, :method => :delete, :confirm => 'Are you sure you want to delete this invoice' do %> <i class="icon-trash"></i><% end %>
    </td>
    </tr>
  <% end %>

invoice.jobs.inspect返回以下內容:

[#<Job id: 15, start_date: "2012-03-24", due_date: "2012-03-31", notes: "grthryrth", audio_file_url: "1.txt", transcribed_file_url: "300.txt", status: "invoiced", account_id: 1, user_id: 1, client_id: 2, created_at: "2012-03-29 18:03:14", updated_at: "2012-03-29 18:40:49", invoice_id: 6>, #<Job id: 16, start_date: "2012-03-24", due_date: "2012-03-21", notes: "uopuiouioiio", audio_file_url: "Data Flow Analysis and Integration v1.1.docx", transcribed_file_url: "ECA-Sponsor Monthly Agenda 20120105.doc", status: "invoiced", account_id: 1, user_id: 4, client_id: 2, created_at: "2012-03-29 18:05:24", updated_at: "2012-03-29 18:40:49", invoice_id: 6>]

如何單獨訪問每個值,例如invoice.jobs.start_date? 謝謝!

如果您想獲取發票,那么對用戶而言,遍歷用戶模型似乎是倒退的。 考慮這樣的事情:

@invoices = Invoice.joins( :client => { :accounts => :user } ).
                    include( :client, :jobs ).
                    where( "accounts.user_id" => current_user.id ).
                    all

但是,無論哪種方式,如果invoice.jobs是一個數組(如其為復數並且在其inspect輸出中帶有方括號即可證明),則您首先需要使用例如[0]first訪問該數組的元素:

invoice.jobs.first.start_date
# => "2012-03-24"

有多種方法:您可以在工作模型中覆蓋inspect ,如果不想弄亂inspect ,可以創建另一種方法(類似pretty_display等),或使用視圖助手(例如job_pretty_display(job) )。 我會選擇第三個選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM