我有两种模式:
class PortStock < ApplicationRecord
has_many :closed_positions
accepts_nested_attributes_for :closed_positions
end
class ClosedPosition < ApplicationRecord
belongs_to :closer, class_name: "PortStock", foreign_key: "closer_id"
belongs_to :closed, class_name: "PortStock", foreign_key: "port_stock_id"
end
我知道这种关联有效,因为我已经测试了它。
然后,我在views/port_stocks/sell/_form.html.erb
处有一个部分形式,如下所示:
<%= simple_form_for @port_stock, url: port_stocks_sell_order_path, method: :post do |f| %>
<% @port_stocks.each do |port_stock| %>
<%= f.simple_fields_for :closed_positions, html: { class: "form-inline" } do |c| %>
<%= c.input_field :num_units, id: "sell-ps-#{port_stock.id}", class: "form-control mx-sm-3" %>
<% end %>
<% end %>
<%= f.button :submit, "Sell Stock", class:"btn btn-primary" %>
<% end %>
但是,在呈现HTML时,它不会呈现simple_fields_for
中的任何文本字段。
如果我在binding.pry
行之前放置f.simple_fields_for
,则会暂停执行。如果我把它放在后面,它就没有了。这告诉我simple_fields_for
没有被执行。
但根据the docs我应该怎么做。
我错过了什么?为什么这不会在simple_fields_for
?
答案 0 :(得分:0)
我明白了。
我的控制器中build
实际上并非closed_positions
。
所以,一旦我将此代码添加到我的控制器:
@port_stock.closed_positions.build
这就像一个魅力。