将一个模型作为属性传递给另一个模型

时间:2019-12-09 23:45:00

标签: ruby-on-rails

我正在铁路上做一个应用程序,您可以在其中访问餐馆并从他们提供的盘子上订购。我现在想做的是为一个名为“ Cart”的购物车创建了一个支架,我想在创建订单时将其分配给它(也是一个支架)。

应该是当您完成购物车并按“继续订购”(views / cart / show.html.erb)时,会将您重定向到new_order_path,询问您其他人的其他属性,例如地址,以及付款方法。当您在创建订单时可以分配您所在的购物车时,我感到非常困惑。

而且,我已经在cart.rb上拥有了这个:

class Cart < ApplicationRecord
    belongs_to :order 

这在order.rb上:

class Order < ApplicationRecord
  belongs_to :user
  has_one :cart

(更新)我想在您提交其他参数以完成表单上的订单时分配购物车,方法是:

<%= form_with(model: order, local: true) do |form| %>
.
.
.
 <div class="actions">
    <%= form.submit do order.asign(Cart.find(session[:cart_id])) %>
  </div>
<% end %>

但是它不起作用

1 个答案:

答案 0 :(得分:0)

在您的show.html.erb文件中,更改:

<p>Total: <%= order.cart.total_price %></p>

收件人:

<p>Total: <%= @order.cart.total_price %></p>

然后在show的{​​{1}}动作中做到:

OrdersController

我已经假设您正在def show @order = Order.find(params[:id]) end

下传递订单ID

在没有有效的params[:id]对象连接到cart之前,您将继续收到遇到的错误。

要解决此问题,请在order中进行以下操作:

show.html.erb

如果没有与<p>Total: <%= @order.cart.total_price || 0 %></p>关联的total_price,它将0显示为cart