【发布时间】:2017-05-16 22:54:47
【问题描述】:
我有一个包含许多项目和客户的订单模型。出于某种原因,我一直在寻找解决方案,但在使用嵌套表单时,我无法将项目和客户的属性保存在其受人尊敬的表中。
我对 Rails 比较陌生,所以如果我遗漏了一些明显的东西,我深表歉意。
于 2017-05-16 16:12:17 -0600 开始为 ::1 发布“/orders” 通过 OrdersController#create 作为 HTML 参数:{"utf8"=>"✓", "authenticity_token"=>"k1QPQ560j44Mx0SNeCMBQAUGLQfEi4g0QpDfHuYeP4Zd7nVgcHJf3qXNsVQv29dV+5G0oJ7wioQ3Idw+DP+iw==", "order"=>{"customer"=>{"name"=>"Test", "email"=>"Test", "phone"=>"Test"}, "item"=>{"name"=>"Test", "ref_num"=>"Test", “零售”=>“122”},“状态”=>“测试”,“到达”=>“06/06/19”, "tracking"=>"Test439"}, "commit"=>"Save Order"} 未经许可 参数:客户、商品
订单控制器
def create
@order = Order.new(order_params)
@order.items.build
@order.customers.build
@order.save
redirect_to @order
end
private
def order_params
params.require(:order).permit(:status, :arrival, :tracking,
customers_attributes: [:name, :phone, :email],
items_attributes: [:name, :ref_num, :retail])
end
订单模型
class Order < ApplicationRecord
has_many :items
has_many :customers
accepts_nested_attributes_for :items, :customers
end
订单表格(新)
<%= form_for :order, url: orders_path do |f| %>
<%# customer parameters%>
<%= f.fields_for :customers do |cu| %>
<p>
<%= cu.label :customer_name %><br>
<%= cu.text_field :name %>
</p>
<p>
<%= cu.label :email %><br>
<%= cu.text_field :email %>
</p>
<p>
<%= cu.label :phone %><br>
<%= cu.text_field :phone %>
</p>
<% end %>
<%# Item parameters %>
<%= f.fields_for :items do |it| %>
<p>
<%= it.label :item_name %><br>
<%= it.text_field :name %>
</p>
<p>
<%= it.label :reference_number %><br>
<%= it.text_field :ref_num %>
</p>
<p>
<%= it.label :retail %><br>
<%= it.text_field :retail%>
</p>
<% end %>
<%# order parameters%>
<p>
<%= f.label :status %><br>
<%= f.text_field :status %>
</p>
<p>
<%= f.label :est_arrival %><br>
<%= f.text_field :arrival %>
</p>
<p>
<%= f.label :tracking %><br>
<%= f.text_field :tracking %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
<%= link_to 'Back', orders_path %>
【问题讨论】:
-
这真的来自这个表格吗?至少乍一看,我看不出表格有什么问题。
-
尝试在您的表单上使用
form_for @order,并在您的new操作上实例化@order = Order.new
标签: ruby-on-rails