active_interaction
active_interaction copied to clipboard
Nested forms
Hello, I'm trying to use ActiveInteraction with nested forms feature of rails. Here is my view:
<%= form_with model: interaction do |f| %>
<%= f.fields_for :sections do |ff| %>
<%= debug ff.object.class %>
<% end %>
<% end %>
For some reason, the debug line is not returning a nested section
record but nil
. On the other hand, if i pass a second argument to fields_for
(collection) as, say, f.fields_for :sections, record.sections
, the debug line returns ActiveRecord::Relation
instance instead of the record.
Changing this code to use a direct record instead of interaction objects fixes everything and debug starts returning actual record objects which means that there is something wrong about ActiveInteraction that yelds a collection to fields_for block instead of iterating through objects. Or i just did something wrong :)
Thanks in advance for any clues!
Is this an issue with the code itself, or a general question? For general questions Stackoverflow or Github Discussions (if one is setup for this repo) is better than Github.
It's happening only when using active_interaction so it seems like a bug with AI, not a general question
Or i just did something wrong :)
Yes, you are correct, that's what I observe too. I didn't get to the bottom of it, so I'm just always passing the second argument.
Update. fields_for
is looking for a specific interface on the object which is implemented by accepts_nested_attributes_for
in ActiveRecord::NestedAttributes::ClassMethods
.
Specifically methods
-
#{association}_attributes=
and -
association
I've started implementing accepts_nested_attributes_for
extension for active_interaction
. It's still experimental, and only implemented for collections, but I already found it a great time saver for implementing nested forms.
You can see it here. https://github.com/antulik/active_interaction-extras/blob/master/lib/active_interaction/extras/nested_attributes.rb