How to retrive multiple vaules from a view for a text_field!


#1

Hi,

I have view page which takes all the information like contact’s emails ,
phones no’s etc and saves different tables. I want to save more than one
email id’s for a particular contact.

view page is something like this…

.
.
Email 1 :
<%= select ‘email’, ‘email_type’, %w(Business Personal), :include_blank
=> false %>
<%= text_field ‘email’,‘email’,:size=>“35”,:maxlength=>“80” %>
<%= radio_button ‘email’, ‘isprimary’, ‘1’ %>Primary
Email 2 :
<%= select ‘email’, ‘email_type’, %w(Business Personal), :include_blank
=> false %>
<%= text_field ‘email’,‘email’,:size=>“35”,:maxlength=>“80” %>
<%= radio_button ‘email’, ‘isprimary’, ‘1’ %>Primary
.
.

Controller is :

def create
@contact = Contact.new(params[:contact])
@contact.emails << Email.new(params[:email])
@contact.phones << Phone.new(params[:phone])
@contact.addresses << Address.new(params[:address])
puts “hellooooooo bharati”
params.inspect
if @contact.save
flash[:notice] = “Contact was successfully created.”
redirect_to :action => ‘list’
else
render :action => ‘new’
flash[:notice] = “Contact was not created.”
end
end

Can any one help me how to send more than one email ids to controller…


#2

On Nov 11, 9:46 am, Raji M. removed_email_address@domain.invalid
wrote:

Hi,

I have view page which takes all the information like contact’s emails ,
phones no’s etc and saves different tables. I want to save more than one
email id’s for a particular contact.

view page is something like this…

There’s two separate problems here:

  • how you manage the ui, ie adding extra textfields to the page
  • how you convince rails to treat these textfields as an array.

The key to the second part is how you name the parameters. In
particular parameters ending with a [] are treated as arrays.

Fred


#3

Frederick C. wrote:

On Nov 11, 9:46�am, Raji M. removed_email_address@domain.invalid
wrote:

Hi,

I have view page which takes all the information like contact’s emails ,
phones no’s etc and saves different tables. I want to save more than one
email id’s for a particular contact.

view page is something like this…

There’s two separate problems here:

  • how you manage the ui, ie adding extra textfields to the page
  • how you convince rails to treat these textfields as an array.

The key to the second part is how you name the parameters. In
particular parameters ending with a [] are treated as arrays.

Fred

Yes . I was able to submit more than one text field values… but now my
issue is how do i differentiate radio buttons with the same name… both
the radio buttons are getting selected :(… here is the code

<% form_for :@contact do |f| %>
<% @contact.emails.each_with_index do |email, index| %>
<% fields_for “email[#{index}]”, email do |f| %>


Email &nbsp  
<%= f.select :email_type, %w(Business Personal),
:include_blank => false %>
<%= f.text_field :email %>
<%= f.radio_button :isprimary ,‘index’ %>Primary

<% end %>
<% end %>
<% end %>

#4

On Nov 12, 5:18 am, Raji M. removed_email_address@domain.invalid
wrote:

issue is how do i differentiate radio buttons with the same name… both
the radio buttons are getting selected :(… here is the code

the builders yielded by form_for and fields_for have the same name, so
they’ll be overwriting each other (which isn’t what I thing you want).
Also shouldn’t the second parameter to radio_button be index and not
‘index’ ?

Fred


#5

On 12 Nov 2008, at 10:13, Raji M. wrote:

so
where as the other values get saved if i do not select radio button.

From the code I’d guess that you end up with params[:email]
containing the string 1, which you then try and call values on.

Fred


#6

Frederick C. wrote:

On Nov 12, 5:18�am, Raji M. removed_email_address@domain.invalid
wrote:

issue is how do i differentiate radio buttons with the same name… both
the radio buttons are getting selected :(… here is the code

the builders yielded by form_for and fields_for have the same name, so
they’ll be overwriting each other (which isn’t what I thing you want).
Also shouldn’t the second parameter to radio_button be index and not
‘index’ ?

Fred

ya. got it. But there exists an issues… When i select radio button i ll
get the following error. . “undefined method `values’ for “1”:String”
where as the other values get saved if i do not select radio button.

Also If i enter only one email id the form is not getting saved.
Controller is as follows.

def new
@contact = Contact.new
2.times { @contact.emails.build }
end
def create
@contact = Contact.new(params[:contact])
params[:email].each_value do |email|
@contact.emails.build(email) unless email.values.all?(&:blank?)
end
if @contact.save
flash[:notice] = “Successfully created new Contact.!!!”
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end

Where i went wrong?