我想要将Grand_Total显示到显示页面,我已经做了一个部分文件放入表中,在里面我想获取订单产品数据并显示在前面,但它显示了这个错误。我似乎没有定义Grand_Total方法,但不确定如何解决它。
订单控制器
class OrdersController < ApplicationController
def supplier
@supplier = Supplier.find(params[:id])
end
def outlet
@outlet = Outlet.find(params[:id])
end
def index
@orders = Order.all
end
def show
@orders = Order.all
@order_products = OrderProduct.all
end
def new
@order = Order.new
@supplier = Supplier.all
@outlet = Outlet.all
@products = Product.all
end
def create
@order = Order.new(order_params)
@supplier_id = Supplier.all
@outlet_id = Outlet.all
if @order.save
product_ids = params[:product_ids]
product_ids.each do |product_id|
OrderProduct.create(order_id: @order.id, product_id: product_id)
end
flash[:success] = "Succesful create!"
redirect_to @order
else
render 'new'
end
end
private
def order_params
params.require(:order).permit(:supplier_id,:quantity, :grand_total, :order_date,
:delivery_date, :delivery_address, :outlet_id)
end
end
_orderProduct.html.erb
<div class="container">
<ul class="responsive-table">
<li class="table-header">
<div class="col col-1">Product</div>
<div class="col col-2">Price</div>
<div class="col col-4">Grand_total</div>
</li>
<% @order_products.each do |order_product| %>
<li class="table-row">
<div class="col col-1" data-label="Product"><%= order_product.product.name %></div>
<div class="col col-2" data-label="Price"><%= order_product.product.price %></div>
<div class="col col-4" data-label="Grand_total"><%= order_product.order.grand_total %></div>
<% end %>
</ul>
</div>
Show.html.erb
<% provide(:title)%>
<h2 class="dashboard">Order details</h2>
<div class="row">
<aside class="col-md-4">
<section class="stats">
<%= render 'shared/stats' %>
</section>
<%= render 'orders/orderproduct' %>
<div class="side">
<button class="button-30"><%= link_to "Back to home", home_path %></button>
</div>
</aside>
</div>
2条答案
按热度按时间vnjpjtjt1#
在您的示例中,唯一可以调用
grant_total
的地方是:错误消息告诉我们,在Orders#show中,
nil:NilClass
的未定义方法grand_total
中存在NoMethodError。这意味着您正在对nil
而不是您期望的对象类型调用grant_total
。只有当order_product.order
返回nil
时,才会发生这种情况。这意味着您的数据库中有一个没有分配order
的order_product
。有几种方法可以解决这个问题,具体取决于您想要实现的目标:
ryhaxcpt2#
您可以使用调试器查看哪个变量返回空值。检查并从那里开始工作。