accepts_nested_attributes_for отображать только одну запись при использовании с has_many - PullRequest
0 голосов
/ 26 августа 2018

Мои модели

class Game < ApplicationRecord
  has_many :rounds
  accepts_nested_attributes_for :rounds
end

class Round < ApplicationRecord
  belongs_to :game
end

контроллер

def new
    @game = Game.new
    3.times { @game.rounds.build }
end

просмотр

<%= form_with scope: :game, url: games_path, local: true do |form| %>
  <p>
    <%= form.label :title %><br>
    <%= form.text_field :title %>
  </p>

  <p>
    <%= form.label :game_date %><br>
    <%= form.date_field :game_date %>
  </p>

  <ul>
    <%= form.fields_for :rounds do |builder| %>
      <li>
        <%= builder.label :title %>
        <%= builder.text_field :title %>

        <%= builder.label :order %>
        <%= builder.text_field :order %>
      </li>
    <% end %>
  </ul>

  <p>
    <%= form.submit %>
  </p>
<% end %>

Приведенный выше код генерирует только один "раунд" записи, когда новый строит 3записей.

Я на рельсах 5.2.1

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Это потому, что у вас есть другой объект (formbuilder) при использовании формы.

<%= form_with model: @game, local: true do |form| %>

или

<%= form_with scope: @game, url: games_path, local: true do |form| %>

вместо

<%= form_with scope: :game, url: games_path, local: true do |form| %>

, который производитрезультат желания.Посмотрите этот блог для лучшего понимания.

0 голосов
/ 26 августа 2018

Оказывается, вы должны использовать form_for вместо новой form_with.

...