Ruby on rails Rails 4在接受\u嵌套的\u属性\u时遇到问题
我是rails新手,我正在尝试函数的accepts\u nested\u attributes\u。我正在创建一个库存系统,使用accepts_nested_attributes_for功能将多个订单详细信息附加到订单。订单还必须与门店位置相关联 我遇到的问题是正在创建订单,但没有数据传递到订单详细信息表 我的看法如下: 订单视图 如果您有任何帮助,我们将不胜感激 看起来一切对我来说都是对的-唯一的问题是@Pavan概述的问题,即当您使用时,您必须构建关联对象,以便它可以在表单中使用:Ruby on rails Rails 4在接受\u嵌套的\u属性\u时遇到问题,ruby-on-rails,Ruby On Rails,我是rails新手,我正在尝试函数的accepts\u nested\u attributes\u。我正在创建一个库存系统,使用accepts_nested_attributes_for功能将多个订单详细信息附加到订单。订单还必须与门店位置相关联 我遇到的问题是正在创建订单,但没有数据传递到订单详细信息表 我的看法如下: 订单视图 如果您有任何帮助,我们将不胜感激 看起来一切对我来说都是对的-唯一的问题是@Pavan概述的问题,即当您使用时,您必须构建关联对象,以便它可以在表单中使用: #app
#app/controllers/orders_controller.rb
Class OrdersController < ApplicationController
def new
@location = Location.find parmas[:id]
@order = Order.find params[:id]
@order.order_details.build
end
end
虽然这看起来是您唯一的问题,但在OrderDetail模型的验证中可能会有其他问题,例如您没有遇到的问题
我和Pavan建议的唯一问题是,如果您不构建关联数据,表单上就不会显示字段。如果您的字段显示,则可能是另一个问题,该问题将在参数哈希中突出显示尝试将此行添加到new method@order.order\u details.build。您可以发布从表单提交中收到的参数吗?嘿,Rick,我如何从表单提交中获取参数?好的,我将对此进行研究,看看能找到什么。上面的Rick让我发布表单提交中的参数。我怎么看这个?
<p class="fields">
<%= f.label :item_id %><br />
<%= f.text_field :item_id %></br>
<%= f.label :quantity %></br>
<%= f.text_field :quantity %></br>
<%= f.label :cost %></br>
<%= f.text_field :cost %></br>
<%= f.label :discount %><br />
<%= f.text_field :discount %><br />
<%= f.hidden_field :_destroy %>
<%= link_to_function "remove", "remove_fields(this)" %>
</p>
class OrdersController < ApplicationController
def index
@orders = Order.all
end
def show
@order = Order.find(params[:id])
end
def new
@order = Order.new
@location = Location.find(params[:location_id])
end
def create
@location = Location.find(params[:location_id])
@order = @location.orders.create(order_params)
#@order = @order.order_details.create
if @order.save
redirect_to @order
else
render :action => 'new'
end
end
private
def order_params
params.require(:order).permit(:customer_id, order_detials_attributes: [:id, :item_id, :quantity, :cost, :discount])
end
end
class Order < ActiveRecord::Base
belongs_to :location
has_many :order_details, :dependent => :destroy
accepts_nested_attributes_for :order_details, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
class OrderDetail < ActiveRecord::Base
belongs_to :order
end
resources :locations do
resources :orders
end
resources :orders do
resources :order_details
end
#app/controllers/orders_controller.rb
Class OrdersController < ApplicationController
def new
@location = Location.find parmas[:id]
@order = Order.find params[:id]
@order.order_details.build
end
end