Forum: Ruby on Rails can't update hidden attribute

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
662234d1d667d032cd7835095c789e25?d=identicon&s=25 Sacredceltic (Guest)
on 2009-03-24 14:49
(Received via mailing list)
Hi,

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 = current_user.members.build(params[:member])
  end

  def create
  @member = current_user.members.build(params[:member])
  if @member.save
    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
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-03-24 14:51
(Received via mailing list)
On 24 Mar 2009, at 13:48, Sacredceltic wrote:
>     end  %>
>  </p>
>  <p>
>   <div id='recipient_gender'><% f.hidden_field :gender %></div>
>
Your hidden field isn't actually inserted into the page at all
(because you're using <% instead of <%= )

Fred
662234d1d667d032cd7835095c789e25?d=identicon&s=25 Sacredceltic (Guest)
on 2009-03-24 15:51
(Received via mailing list)
Very well spotted !
I corrected that but it still doesn't work...

On Mar 24, 2:51 pm, Frederick Cheung <frederick.che...@gmail.com>
0b2656e3a8d8a51209f60e609c3e9392?d=identicon&s=25 Florian Dutey (Guest)
on 2009-03-24 15:56
(Received via mailing list)
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
662234d1d667d032cd7835095c789e25?d=identicon&s=25 Sacredceltic (Guest)
on 2009-03-24 15:58
(Received via mailing list)
Could you please explain how to do that ?
662234d1d667d032cd7835095c789e25?d=identicon&s=25 Sacredceltic (Guest)
on 2009-03-25 08:28
(Received via mailing list)
any hint ?

Thank you
662234d1d667d032cd7835095c789e25?d=identicon&s=25 Sacredceltic (Guest)
on 2009-03-25 20:31
(Received via mailing list)
I tried this :

in my controller :

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

in my view :

page.replace_html 'recipient_gender', @male

It doesn't work either...
This topic is locked and can not be replied to.