Rails孩子没有渲染p

时间:2014-05-25 20:01:37

标签: ruby-on-rails view children

我有一个叫做任务订单的模型,它有很多发票。当我单击“显示”作为任务订单时,它应该显示属于该任务订单的所有发票。但是,当我点击“显示”时,它会显示所有发票,甚至是那些不属于该任务订单的发票。请注意,我的合同/任务订单具有相同的关系和视图,但它工作正常,所以我不确定哪里出错了。

这是我的任务订单模型:

class TaskOrder < ActiveRecord::Base
belongs_to :contract
has_many :invoices, :dependent => :destroy
validates_presence_of :id
validates_uniqueness_of :id
self.primary_key = :id
end

这是我的发票模型

class Invoice < ActiveRecord::Base
belongs_to :task_order
validates_presence_of :task_order_id
end

这是我的观点/ task_orders / show code

发票:

<table>
  <thead>
    <tr>
  <th>Invoice Date</th>
  <th>Invoice #</th>
  <th>PoP</th>
  <th>Amount</th>
  <th>Description</th>
  <th>Invoice TO</th>
  <th></th>
  <th></th>
  </tr>
 </thead>
</tr>

   <tbody>
<% @invoices.each do |invoice| %>
  <tr>
    <td><%= invoice.invoiceDate%></td>
    <td><%= invoice.invoiceNumber %></td>
    <td><%= invoice.PoP %></td>
    <td><%= number_to_currency(invoice.amount) %></td>
    <td><%= invoice.description %></td>
    <td><%= invoice.task_order_id %></td>
    <td><%= link_to 'Show', invoice %></td>
    <td><%= link_to 'Edit', edit_invoice_path(invoice) %></td>
    <td><%= link_to 'Destroy', invoice, method: :delete, data: { confirm: 'Are you sure?'     } %></td>
  </tr>
<% end %>
 </tbody>

</table>

这是我的任务订单控制器:

def show
  @invoices = Invoice.all
end

def index
  @task_orders = TaskOrder.all
end

1 个答案:

答案 0 :(得分:0)

在您的show方法中,您只想获取任务订单的发票,而不是您当前获得的所有发票。

def show
  @task_order = TaskOrder.find(params[:id])
  @invoices = @task_order.invoices
end

这样,您无需更改show.html.erb文件。另外,你应该看一下Rails Guides,它可以帮助你学习Rails。