Double nested association w/ Cocoon and Polimorphism gets rejected

Multi tool use
Multi tool use
The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP


Double nested association w/ Cocoon and Polimorphism gets rejected



So, I have a model Label which is polymorphic and another model Stuff which is not. A stuff can have many labels (may also called groups), and each and every one of them can also have a label. I am working with the Cocoon gem to try to add these resource on to a sigle edit/new form (the Stuff one). The problem is that when I try to update the stuff with a new group (with new labels in it), it says this Labels lables labelable must exist. I think that that's an error given becouse the first lable(group) is not yet saved to the database, so it can't give his nested lable an id. (not sure though)


Label


Stuff


Stuff


Labels lables labelable must exist



Also, is this the best way to do that? I mean, I made the label polymorphic only because I needed to save a only a string, and it would be unpractical and it would have taken database storage for nothing...



Enough talking, here's my code:


<div class="form-group">
<label>Groups:</label>
<div id="group" class="col-md-12 p-0 pl-md-3">
<%= form.fields_for :labels do |groupForm| %>
<%= render 'group_fields', f: groupForm %>
<% end %>
<div class="text-center">
<%= link_to_add_association 'Add Group', form, :labels, partial: 'group_fields', class: 'btn btn-success',
wrap_object: Proc.new { |group| group.labels.build; group } %>
</div>
</div>
</div>



that's in my _form.html.erb


<div class="nested-fields">
<div class="field form-group row">
<%= f.label :name, class: 'col-sm-1 col-form-label' %>
<div class="col-sm-10">
<%= f.text_field :name, class: 'form-control ml-2' %>
</div>
<div class="col-sm-1 p-0">
<%= link_to_remove_association "&times;".html_safe, f, class: 'badge badge-pill badge-danger mt-2' %>
</div>
<div class="col-12">
<div id="label" class="col-md-12 p-0 pl-md-5 pt-2">
<%= f.fields_for :labels do |labelForm| %>
<%= render 'label_fields', f: labelForm %>
<% end %>
<div class="text-center">
<%= link_to_add_association 'Add Label', f, :labels, class: 'btn btn-success' %>
</div>
</div>
</div>
</div>
</div>



that's in _group_fields.html.erb


<div class="nested-fields">
<div class="field form-group row mb-2">
<%= f.label :name, class: 'col-sm-1 col-form-label' %>
<div class="col-sm-10">
<%= f.text_field :name, class: 'form-control ml-2' %>
</div>
<div class="col-sm-1 p-0">
<%= link_to_remove_association "&times;".html_safe, f, class: 'badge badge-pill badge-danger mt-2' %>
</div>
</div>
</div>



and that's in my _label_fields.html.erb


class Label < ApplicationRecord
belongs_to :labelable, polymorphic: true
has_many :labels, as: :labelable, dependent: :destroy

accepts_nested_attributes_for :labels, allow_destroy: true, reject_if: proc { |att| att[:name].blank? }
end



this is my Label model


class Stuff< ApplicationRecord
has_many :labels, as: :labelable, dependent: :destroy

accepts_nested_attributes_for :labels, allow_destroy: true, reject_if: proc { |att| att[:name].blank? }
end



and this is my Stuff model



I forgot to mention that if i add only the first "layer" of label (group) without writing anithing on the labels (2nd "layer") and I submit the form (wich I can do and it updates the database as well) when i come back and edit i can actually modify the 2nd "layer" without any problems.
Anyway, thank you in advance.









By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

H QdI,FCadyJ gj,7 EUlV4ns,u0VCR6Why4 zkcvMFKlu9pEiD6 n9qo MGx KczRhzChBoq kNc4fGgDtiteTfq,zk
B DVAhTYQfgr9mbjBHRC61GQnv YUwy0,xn E2GEo4xJc P85MIYrr,iIyOSnb 3NUD,KLnOf3hhJ0iU,tkLZj41OKPvyXQG5m,yzwe

Popular posts from this blog

Makefile test if variable is not empty

Visual Studio Code: How to configure includePath for better IntelliSense results

Will Oldham