Можно ли создать форму для вложенного ресурса без родительской записи, пока я не сохраню?
У меня две модели 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
записи на создание.