Можно ли создать форму для вложенного ресурса без родительской записи, пока я не сохраню?

У меня две модели Player а также MicroReport, MicroReport является вложенным ресурсом Player, Я пытаюсь создать отдельную форму, чтобы позволить пользователям создавать MicroReport без необходимости сначала перейти на страницу игрока, а затем создать отчет. Это возможно?

Я собирался попробовать использовать форму ниже, где они могли выбрать игрока во время создания формы - но, насколько мне известно, мне нужно было бы указать запись игрока здесь (которой в настоящее время не существует).

<%= simple_form_for [@micro_report.player, @micro_report] do |form| %>
  <div class="row">
    <div class="col-xs-12">
      <%= form.input :author_id, as: :hidden, input_html: { value: current_user.id } %>
      <%= form.input :player, input_html: { class: "player-search-box-for-micro-report" }, 
           data: { autocomplete_source: auto_complete_searches_path } %>
      <%= form.input :grade, collection: Grade.joins(:scale)
           .where(scales: { name: "Skill Scale" } ) %>
      <%= form.input :summary, label: "Summary" %>
    </div>
  </div>

  <div class="form-actions">
    <%= form.button :submit %>
  </div>
<% end %>

class Player < ApplicationRecord
  has_many :micro_reports
end

class MicroReport < ApplicationRecord
  belongs_to :author
  belongs_to :player
  belongs_to :grade
end

routes.rb

resources :players do
 scope module: :players do
   resources :micro_reports  
 end
end

1 ответ

Решение

В этом случае вам нужно добавить optional: true к belongs_to :player,

belongs_to :player, optional: true

Из документации

required по умолчанию установлено в true и устарело. Если вы не хотите проверять наличие ассоциации, используйте optional: true,

С помощью этой настройки вы можете создать MicroReport записи без добавления Player записи на создание.

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