Почему этот 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

Это работает как шарм.

Другие вопросы по тегам