在保存之前,我可以为没有父记录的嵌套资源创建表单吗?
Can I create a form for a nested resource without the parent record until I save?
我有两个模型 Player
和 MicroReport
。 MicroReport
是 Player
的嵌套资源。我正在尝试创建一个单独的表单,以允许用户创建一个 MicroReport
,而不必先导航到播放器页面然后创建报告。这可能吗?
我打算尝试使用下面的表格,他们可以在创建表格的过程中 select 玩家 - 但据我所知,我需要在此处指定玩家记录 (目前不存在)。
<%= 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
在这种情况下,您需要将 optional: true
添加到 belongs_to :player
。
belongs_to :player, optional: true
required
is set to true by default and is deprecated. If you don't
want to have association presence validated, use optional: true
.
有了这个设置,您可以创建 MicroReport
条记录,而无需在创建时添加 Player
条记录。
我有两个模型 Player
和 MicroReport
。 MicroReport
是 Player
的嵌套资源。我正在尝试创建一个单独的表单,以允许用户创建一个 MicroReport
,而不必先导航到播放器页面然后创建报告。这可能吗?
我打算尝试使用下面的表格,他们可以在创建表格的过程中 select 玩家 - 但据我所知,我需要在此处指定玩家记录 (目前不存在)。
<%= 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
在这种情况下,您需要将 optional: true
添加到 belongs_to :player
。
belongs_to :player, optional: true
required
is set to true by default and is deprecated. If you don't want to have association presence validated, useoptional: true
.
有了这个设置,您可以创建 MicroReport
条记录,而无需在创建时添加 Player
条记录。