Hi,
Just a guess...
On Nov 17, 7:57 pm, Raji Mani <[EMAIL PROTECTED]>
wrote:
> <% form_for (:contact,:url=>{:controller=>'contact',:action =>
> 'update',:id => @contact},:html=> {:onSubmit => 'return validate()', :id
> => 'savecontact'} ) do -%>
> .
> .
> .
> .
> <table cellpadding="4" cellspacing="0" border="1" width="100%"
> class="details">
> <tr> <th colspan="4" align="left" bgcolor="#797ba8"><strong><font
> color="fffff">Email Addresses</font></strong></th>
> </tr> <tr>
> <% for email in @contact.emails %>
> <% fields_for "contact[email_attributes][]", email do |e| %>
So this will generate
params[:contact][:email_attributes][<email_id>][<email_field>] =>
<field value in form>
Each element in this params is a hash.
Check your server logs to verify that that is what you're getting.
> <td nowrap class="formLabel">Email </td>
> <td > <%= e.select ('email_type',%w{Business Personal},
> :include_blank => false) %>
> <%= e.text_field :email,:size=>"35",:maxlength=>"80" %>
> <%= e.radio_button ('isprimary', '1') %>Primary
> </td>
> </tr> <% end %> <% end %></table>
> .
> .
> is my view page and here is my update function in contact_cotroller.rb
>
> def update
> @contact = Contact.find(params[:id])
> if @contact.update_attributes!(params[:contact])
> flash[:notice] = "The contact has been updated successfully."
> redirect_to :action => 'view', :id => @contact
> else
> render :action => 'edit'
> end
> end
> is throwing the following error
> can't convert String into Integer
>
> RAILS_ROOT: E:/ruby1/Ruby/BCMS
> Application Trace | Framework Trace | Full Trace
>
> app/models/contact.rb:11:in `[]'
> app/models/contact.rb:11:in `email_attributes='
> app/models/contact.rb:10:in `each'
> app/models/contact.rb:10:in `email_attributes='
> app/controllers/contact_controller.rb:59:in `update
>
> Where am i going wrong..??
>
> and my contact.rb is class Contact < ActiveRecord::Base
> belongs_to :company, :counter_cache => false
> has_many :users
> has_many :addresses
> has_many :emails
> has_many :phones
> validates_presence_of :namefirst, :namelast,:message=>'Database
> Validation Error from Contact'
>
> def email_attributes=(email_attributes)
> email_attributes.each do |attributes|
email_attributes is a hash with keys being email id's pointing to
email attributes.
See previous note above.
When you do email_attributes.each |attributes| , 'attributes' will be
an array with the first
value being the key and the 2nd element being the value.
> emails.build(attributes) unless attributes["email"].empty?
Calling attributes["email"] would trigger the above conversion error
because arrays expect numeric indexes.
> end
> end
>
Also, I noticed you're saying ":id => @contact" . I would have though
@contact.id but might be missing something.
--
Daniel Bush
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---