can't update hidden attribute


I want to be able to determine the gender of a person by clicking on a picture (a boy and a girl's face), and it doesn't work. I can see the F or G appear on the screen (when I don't want that actually because it is supposed to be hidden...) but it doesn't save in the record.

Here is my "new.html.erb" view :

<h1>New member</h1>

<% form_for(@member) do |f| %>   <%= f.error_messages %>

  <p>   <%= link_to_function(image_tag("Young M.jpg"), nil, :id => "M") do | page>     page.replace_html 'recipient_gender', "M"     end %>

  <%= link_to_function(image_tag("Young F.jpg"), nil, :id => "F") do | page>     page.replace_html 'recipient_gender', "F"     end %>   </p>   <p>   <div id='recipient_gender'><% f.hidden_field :gender %></div>   </p>   <p>     Nickname: <%= f.text_field :nickname %>   </p>   <p>     <%= f.submit "Create member" %>   </p> <% end %>

And here are my members_controller corresponding actions :

  def new   @member =[:member])   end

  def create   @member =[:member])   if     flash[:notice] = 'member is created.'     redirect_to :action => 'index'   else         format.html { render :action => "new" }         format.xml { render :xml => @recipient.errors, :status => :unprocessable_entity }   end   end

Thank you

Your hidden field isn't actually inserted into the page at all (because you're using <% instead of <%= )


It won't work anyway. In your really clean js code, you're replacing the content of "recipient_gender" by text ("f" or "m"). So, you're replacing <input type="hidden" ...> by "f" or "m" and it won't be submitted to server.

Use labels

Very well spotted ! I corrected that but it still doesn't work...

Could you please explain how to do that ?

any hint ?

Thank you

I tried this :

in my controller :

@male = "M" @female="F"

in my view :

page.replace_html 'recipient_gender', @male

It doesn't work either...