私は繭の宝石にあるチュートリアルで行くつもりです。 Toiletを作成しようとすると、トイレが最初に作成されない限り、追加している施設は保存されません。私はそれがそのまま一緒に作られていたはずだと思っていました。トイレを作るときに施設を救う方法はありますか?繭の宝石を使用して入れ子になったフォームを追加する。トイレが最初に作られない限り、施設は保存されません。
は物事が混乱しないようにするに
class Toilet < ApplicationRecord
has_many :facilities
accepts_nested_attributes_for :facilities, reject_if: :all_blank, allow_destroy: true
end
class Facility < ApplicationRecord
belongs_to :toilet
end
トイレコントローラ
def new
@toilet = Toilet.new
end
def create
@toilet = Toilet.new(toilet_params)
if @toilet.save
redirect_to @toilet
else
render :new
end
end
private
def toilet_params
params.require(:toilet).permit(:name, :location, facilities_attributes: [:id, :name, :_destroy])
end
_form.html.erb
<%= f.simple_fields_for :facilities do |facility| %>
<%= render 'facility_fields', :f => facility %>
<% end %>
<div class='links'>
<%= link_to_add_association 'add facility', f, :facilities %>
</div>
<%= f.submit 'Save' %>
<% end %>
_facility_fields.html.erb
<div class='nested-fields'>
<%= f.inputs do %>
<%= f.input :name %>
<%= link_to_remove_association "remove facility", f %>
<% end %>
</div>
ショートバージョン、はいあなたは同時に両方を保存することができます...ロングバージョン:総称的に、あなたは間違いなく、その後、動的に、これまでの記録をコミットする前にフィールドを追加し、新しいアクションを起動することができます - そして、親の両方を保存します&ネストされたフィールド/モデルは、初めて、同時に。 – Mirv