我有一个叫做任务订单的模型,它有很多发票。当我单击“显示”作为任务订单时,它应该显示属于该任务订单的所有发票。但是,当我点击“显示”时,它会显示所有发票,甚至是那些不属于该任务订单的发票。请注意,我的合同/任务订单具有相同的关系和视图,但它工作正常,所以我不确定哪里出错了。
这是我的任务订单模型:
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
答案 0 :(得分:0)
在您的show
方法中,您只想获取任务订单的发票,而不是您当前获得的所有发票。
def show
@task_order = TaskOrder.find(params[:id])
@invoices = @task_order.invoices
end
这样,您无需更改show.html.erb
文件。另外,你应该看一下Rails Guides,它可以帮助你学习Rails。