Kleber Shimabuku
2011-Aug-04 11:13 UTC
Help to render partial from fieds_for with nested attributes
I''m using nested_attributes and trying to implement the add/remove fields on-the-fly throu ajax following Ryan Bates screencast about Nested Model (#196) Doing this, it works fine: <%= f.fields_for :item_parts do |parts_form| %> <p class="fields"> <%= parts_form.label :part_id %> <%= parts_form.select :part_id, Part.all.collect { |x| [ x.title, x.id ]} %><br /> <%= parts_form.hidden_field :_destroy %> <%= link_to_remove_fields "remove", parts_form %> </p> <% end %> But when trying to pass the form fields to a partial like this, it returns the following error: undefined method `part_id'' for #<Part:0x00000103c4fed8> Extracted source (around line #3): 1: <p class="fields"> 2: <%= f.label :part_id %> 3: <%= f.select :part_id, Part.all.collect { |x| [ x.title, x.id ]} %><br /> 4: <%= f.hidden_field :_destroy %> 5: <%= link_to_remove_fields "remove", f %> 6: </p> The relevant code for the form calls the partial: <%= f.fields_for :item_parts do |parts_form| %> <%= render ''part_fields'', :f => parts_form %> <% end %> partial: /part_fields.html.erb <p class="fields"> <%= f.label :part_id %> <%= f.select :part_id, Part.all.collect { |x| [ x.title, x.id ]} %><br /> <%= f.hidden_field :_destroy %> <%= link_to_remove_fields "remove", f %> </p> So, any help on what I am doing wrong at this point? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Kleber Shimabuku
2011-Aug-04 20:24 UTC
Re: Help to render partial from fieds_for with nested attributes
A friend of mine just realize that the problem is related to the javascript add function. And now I''m trying to fix it. <div><%= add_child_link "Add Part", f, :item %></div> on my Item model I hold the accepts_nested_attributes_for :item_parts but I still getting a error undefined method `klass'' for nil:NilClass this error refers to the object variable on this: def add_child_link(name, form_builder, association) object form_builder.object.class.reflect_on_association(association).klass.new ... end any help? On Aug 4, 8:13 pm, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I''m using nested_attributes and trying to implement the add/remove > fields on-the-fly throu ajax following Ryan Bates screencast about > Nested Model (#196) > > Doing this, it works fine: > > <%= f.fields_for :item_parts do |parts_form| %> > <p class="fields"> > <%= parts_form.label :part_id %> > <%= parts_form.select :part_id, Part.all.collect { |x| > [ x.title, x.id ]} %><br /> > <%= parts_form.hidden_field :_destroy %> > <%= link_to_remove_fields "remove", parts_form %> > </p> > <% end %> > > But when trying to pass the form fields to a partial like this, it > returns the following error: > > undefined method `part_id'' for #<Part:0x00000103c4fed8> > > Extracted source (around line #3): > > 1: <p class="fields"> > 2: <%= f.label :part_id %> > 3: <%= f.select :part_id, Part.all.collect { |x| [ x.title, > x.id ]} %><br /> > 4: <%= f.hidden_field :_destroy %> > 5: <%= link_to_remove_fields "remove", f %> > 6: </p> > > The relevant code for the form calls the partial: > > <%= f.fields_for :item_parts do |parts_form| %> > <%= render ''part_fields'', :f => parts_form %> > <% end %> > > partial: /part_fields.html.erb > > <p class="fields"> > <%= f.label :part_id %> > <%= f.select :part_id, Part.all.collect { |x| [ x.title, x.id ]} > %><br /> > <%= f.hidden_field :_destroy %> > <%= link_to_remove_fields "remove", f %> > </p> > > So, any help on what I am doing wrong at this point?-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Walter Lee Davis
2011-Aug-04 20:41 UTC
Re: Re: Help to render partial from fieds_for with nested attributes
On Aug 4, 2011, at 4:24 PM, Kleber Shimabuku wrote:> A friend of mine just realize that the problem is related to the > javascript add function. > > And now I''m trying to fix it. > > <div><%= add_child_link "Add Part", f, :item %></div>Look outside of this line. Are you sure you are inside of the `form_for @your_model do |f|` loop at the moment you see this line? The error sounds like you''re outside of it, and thus builder.object (inside the helper) doesn''t resolve to @ your_model. Walter> > on my Item model I hold the accepts_nested_attributes_for :item_parts > > but I still getting a error > > undefined method `klass'' for nil:NilClass > > this error refers to the object variable on this: > > def add_child_link(name, form_builder, association) > object > form_builder > .object.class.reflect_on_association(association).klass.new > ... > end > > > any help? > > > > > > On Aug 4, 8:13 pm, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> I''m using nested_attributes and trying to implement the add/remove >> fields on-the-fly throu ajax following Ryan Bates screencast about >> Nested Model (#196) >> >> Doing this, it works fine: >> >> <%= f.fields_for :item_parts do |parts_form| %> >> <p class="fields"> >> <%= parts_form.label :part_id %> >> <%= parts_form.select :part_id, Part.all.collect { |x| >> [ x.title, x.id ]} %><br /> >> <%= parts_form.hidden_field :_destroy %> >> <%= link_to_remove_fields "remove", parts_form %> >> </p> >> <% end %> >> >> But when trying to pass the form fields to a partial like this, it >> returns the following error: >> >> undefined method `part_id'' for #<Part:0x00000103c4fed8> >> >> Extracted source (around line #3): >> >> 1: <p class="fields"> >> 2: <%= f.label :part_id %> >> 3: <%= f.select :part_id, Part.all.collect { |x| [ x.title, >> x.id ]} %><br /> >> 4: <%= f.hidden_field :_destroy %> >> 5: <%= link_to_remove_fields "remove", f %> >> 6: </p> >> >> The relevant code for the form calls the partial: >> >> <%= f.fields_for :item_parts do |parts_form| %> >> <%= render ''part_fields'', :f => parts_form %> >> <% end %> >> >> partial: /part_fields.html.erb >> >> <p class="fields"> >> <%= f.label :part_id %> >> <%= f.select :part_id, Part.all.collect { |x| [ x.title, >> x.id ]} >> %><br /> >> <%= f.hidden_field :_destroy %> >> <%= link_to_remove_fields "remove", f %> >> </p> >> >> So, any help on what I am doing wrong at this point? > > -- > You received this message because you are subscribed to the Google > Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails- > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > . > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en > . >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Kleber Shimabuku
2011-Aug-05 03:25 UTC
Re: Help to render partial from fieds_for with nested attributes
hi Walter, thank you for replying. it''s inside the form_for code block On Aug 5, 5:41 am, Walter Lee Davis <wa...-HQgmohHLjDZWk0Htik3J/w@public.gmane.org> wrote:> On Aug 4, 2011, at 4:24 PM, Kleber Shimabuku wrote: > > > A friend of mine just realize that the problem is related to the > > javascript add function. > > > And now I''m trying to fix it. > > > <div><%= add_child_link "Add Part", f, :item %></div> > > Look outside of this line. Are you sure you are inside of the > `form_for @your_model do |f|` loop at the moment you see this line? > The error sounds like you''re outside of it, and thus builder.object > (inside the helper) doesn''t resolve to @ your_model. > > Walter > > > > > > > > > > > on my Item model I hold the accepts_nested_attributes_for :item_parts > > > but I still getting a error > > > undefined method `klass'' for nil:NilClass > > > this error refers to the object variable on this: > > > def add_child_link(name, form_builder, association) > > object > > form_builder > > .object.class.reflect_on_association(association).klass.new > > ... > > end > > > any help? > > > On Aug 4, 8:13 pm, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > >> I''m using nested_attributes and trying to implement the add/remove > >> fields on-the-fly throu ajax following Ryan Bates screencast about > >> Nested Model (#196) > > >> Doing this, it works fine: > > >> <%= f.fields_for :item_parts do |parts_form| %> > >> <p class="fields"> > >> <%= parts_form.label :part_id %> > >> <%= parts_form.select :part_id, Part.all.collect { |x| > >> [ x.title, x.id ]} %><br /> > >> <%= parts_form.hidden_field :_destroy %> > >> <%= link_to_remove_fields "remove", parts_form %> > >> </p> > >> <% end %> > > >> But when trying to pass the form fields to a partial like this, it > >> returns the following error: > > >> undefined method `part_id'' for #<Part:0x00000103c4fed8> > > >> Extracted source (around line #3): > > >> 1: <p class="fields"> > >> 2: <%= f.label :part_id %> > >> 3: <%= f.select :part_id, Part.all.collect { |x| [ x.title, > >> x.id ]} %><br /> > >> 4: <%= f.hidden_field :_destroy %> > >> 5: <%= link_to_remove_fields "remove", f %> > >> 6: </p> > > >> The relevant code for the form calls the partial: > > >> <%= f.fields_for :item_parts do |parts_form| %> > >> <%= render ''part_fields'', :f => parts_form %> > >> <% end %> > > >> partial: /part_fields.html.erb > > >> <p class="fields"> > >> <%= f.label :part_id %> > >> <%= f.select :part_id, Part.all.collect { |x| [ x.title, > >> x.id ]} > >> %><br /> > >> <%= f.hidden_field :_destroy %> > >> <%= link_to_remove_fields "remove", f %> > >> </p> > > >> So, any help on what I am doing wrong at this point? > > > -- > > You received this message because you are subscribed to the Google > > Groups "Ruby on Rails: Talk" group. > > To post to this group, send email to rubyonrails- > > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > > . > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en > > .-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Walter Lee Davis
2011-Aug-05 14:15 UTC
Re: Re: Help to render partial from fieds_for with nested attributes
On Aug 4, 2011, at 11:25 PM, Kleber Shimabuku wrote:> hi Walter, > > thank you for replying. > > it''s inside the form_for code block >Either engage the debugger or put a simple puts statement inside your view helper, and see what exactly builder is pointing to at that point. If it''s nil, then step up a level, into the view partial, and see what f is set to just before it is passed to the helper. Lather, rinse, repeat, until you figure out where this property is being dropped. If other aspects of your page are working, and just this one thing is not, then you''ve obviously re-assigned the variable at some point (my money is on a typo). I just built a site following this Railscast last month, and it went perfectly. Walter> > > On Aug 5, 5:41 am, Walter Lee Davis <wa...-HQgmohHLjDZWk0Htik3J/w@public.gmane.org> wrote: >> On Aug 4, 2011, at 4:24 PM, Kleber Shimabuku wrote: >> >>> A friend of mine just realize that the problem is related to the >>> javascript add function. >> >>> And now I''m trying to fix it. >> >>> <div><%= add_child_link "Add Part", f, :item %></div> >> >> Look outside of this line. Are you sure you are inside of the >> `form_for @your_model do |f|` loop at the moment you see this line? >> The error sounds like you''re outside of it, and thus builder.object >> (inside the helper) doesn''t resolve to @ your_model. >> >> Walter >> >> >> >> >> >> >> >> >> >>> on my Item model I hold the >>> accepts_nested_attributes_for :item_parts >> >>> but I still getting a error >> >>> undefined method `klass'' for nil:NilClass >> >>> this error refers to the object variable on this: >> >>> def add_child_link(name, form_builder, association) >>> object >>> form_builder >>> .object.class.reflect_on_association(association).klass.new >>> ... >>> end >> >>> any help? >> >>> On Aug 4, 8:13 pm, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> >>> wrote: >>>> I''m using nested_attributes and trying to implement the add/remove >>>> fields on-the-fly throu ajax following Ryan Bates screencast about >>>> Nested Model (#196) >> >>>> Doing this, it works fine: >> >>>> <%= f.fields_for :item_parts do |parts_form| %> >>>> <p class="fields"> >>>> <%= parts_form.label :part_id %> >>>> <%= parts_form.select :part_id, Part.all.collect { |x| >>>> [ x.title, x.id ]} %><br /> >>>> <%= parts_form.hidden_field :_destroy %> >>>> <%= link_to_remove_fields "remove", parts_form %> >>>> </p> >>>> <% end %> >> >>>> But when trying to pass the form fields to a partial like this, it >>>> returns the following error: >> >>>> undefined method `part_id'' for #<Part:0x00000103c4fed8> >> >>>> Extracted source (around line #3): >> >>>> 1: <p class="fields"> >>>> 2: <%= f.label :part_id %> >>>> 3: <%= f.select :part_id, Part.all.collect { |x| [ x.title, >>>> x.id ]} %><br /> >>>> 4: <%= f.hidden_field :_destroy %> >>>> 5: <%= link_to_remove_fields "remove", f %> >>>> 6: </p> >> >>>> The relevant code for the form calls the partial: >> >>>> <%= f.fields_for :item_parts do |parts_form| %> >>>> <%= render ''part_fields'', :f => parts_form %> >>>> <% end %> >> >>>> partial: /part_fields.html.erb >> >>>> <p class="fields"> >>>> <%= f.label :part_id %> >>>> <%= f.select :part_id, Part.all.collect { |x| [ x.title, >>>> x.id ]} >>>> %><br /> >>>> <%= f.hidden_field :_destroy %> >>>> <%= link_to_remove_fields "remove", f %> >>>> </p> >> >>>> So, any help on what I am doing wrong at this point? >> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Talk" group. >>> To post to this group, send email to rubyonrails- >>> talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >>> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org >>> . >>> For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en >>> . > > -- > You received this message because you are subscribed to the Google > Groups "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails- > talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org > . > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en > . >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.