私はこれを理解しようとして頭を叩いています。私は次のフォームを持っています。
<%= bootstrap_form_for @template do |f| %>
<%= f.text_field :prompt, :class => :span6, :placeholder => "Which one is running?", :autocomplete => :off %>
<%= f.select 'group_id', options_from_collection_for_select(@groups, 'id', 'name') %>
<% 4.times do |num| %>
<%= f.fields_for :template_assignments do |builder| %>
<%= builder.hidden_field :choice_id %>
<%= builder.check_box :correct %>
<% end %>
<% end %>
<% end %>
それから私は私のモデルを持っています:
class Template < ActiveRecord::Base
belongs_to :group
has_many :template_assignments
has_many :choices, :through => :template_assignments
accepts_nested_attributes_for :template_assignments, :reject_if => lambda { |a| a[:choice_id].blank? }, allow_destroy: true
end
フォームが送信されると、ネストされた属性が美しく追加されます。ただし、テンプレートを削除する場合は、すべての子「template_assignments」も削除する必要があります。これは、「allow_destroy => true」と想定したものです。
だから、私はRailsコンソールからこれを試しています(これは私の問題でしょうか??) 私は次のようにします:
>> t = Template.find(1)
#Which then finds the correct template, and I can even type:
>> t.template_assignments
#Which then displays the nested attributes no problem, but then I try:
>> t.destroy
#And it only destroys the main parent, and none of those nested columns in the TemplateAssignment Model.
ここで私が間違っていることはありますか?Railsコンソールでできないからですか?代わりにフォームで行う必要がありますか? もしそうなら、どうすればフォームでこれを達成できますか?
どんな助けでも素晴らしいでしょう!