Try using the ID inside (this works for me):

params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
                 'projects_attributes' => {
                   '1' => { 'id' => '1', 'name' => 'ZZZZ', 'cost' =>
'25000' },
                   '2' => { 'id' => '2', 'name' => 'YYYY', 'cost' =>
'3400'}}}}

An element with an ID is considered to be updated instead of created.

On May 20, 7:09 am, Gonzalo <[email protected]> wrote:
> hi all,
>
> i have the following models:
>
>   class Developer < ActiveRecord::Base
>     has_and_belongs_to_many :projects
>     accepts_nested_attributes_for :projects
>   end
>
>   class Project < ActiveRecord::Base
>     has_and_belongs_to_many :developers
>     accepts_nested_attributes_for :developers
>   end
>
> the following code:
>
>   params = { 'form' => { 'name' => 'gonzalo', 'dni' => '12876365x',
>                'projects_attributes' => {
>                  'new_01' => { 'name' => 'Sioux', 'cost' => '25000' },
>                  'new_02' => { 'name' => 'Apache', 'cost' =>
> '3400'}}}}
>   Developer.create(params['form'])
>
> will create a new Developer and two new Projects and the corresponding
> association between Developer and Projects.
>
> then, I add a new Developer using the same mechanism:
>
>   params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
>                  'projects_attributes' => {
>                    '1' => { 'name' => 'ZZZZ', 'cost' => '25000' },
>                    '2' => { 'name' => 'YYYY', 'cost' => '3400'}}}}
>   Developer.create(params['form'])
>
> following NestedAttributes documentation... this code should add a new
> Developer (paul) and link it against the two already created Projects
> with ids 1 and 2. Besides, this code should modiify projects names
> from Sioux and Apache to ZZZZ and YYYY respectively.
>
> the real result is that a new Developer (paul) is added but linked
> against two new Projects (ZZZZ and YYYY)
>
> am I doing something wrong? should i use another approach to face this
> problem? is accept_nested_attributes_for feature compatible with habtm
> associations?
>
> and last... what if i just want to create a new Developer (paul) that
> is associated with the already created Projects with ids 1 and 2? The
> following code won't work:
>
>   params = { 'form' => { 'name' => 'paul', 'dni' => '17002034z',
>                    'projects_attributes' => {
>                      '1' => { },
>                      '2' => { }}}}
>   Developer.create(params['form'])
>
> thanks in advance for your help!
> regards.
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to