Почему этот simple_fields_for не выполняется?
У меня есть две модели:
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
не выполняется
Но, согласно документации, это то, как я должен это делать.
Что мне не хватает? Почему это не делает поля формы внутри simple_fields_for
?
1 ответ
Я понял.
Я на самом деле не build
closed_positions
в моем контроллере.
Поэтому, как только я добавил этот код в свой контроллер:
@port_stock.closed_positions.build
Это работает как шарм.