views:

43

answers:

2

Hi guys

I have a select input on my page. this select input displays/hides fields in the form. This all works fine. But the problem is that if i submit the form and lack some necessary fields, it doesnt set the select to the right value afterwards. I just cant get the embedded ruby to work! it keeps escaping the whole thing... here my code:

$(document).ready(function() {
$("#profile_sex").val('<%= @profile.sex %>')
   $("#profile_sex").change(function(){



    ($(this).val() == "Frau") ? $('#form-female').show() : $('#form-female').hide();
    ($(this).val() == "Mann") ? $('#form-male').show() : $('#form-male').hide();
    if ($(this).val() == "Paar") {
        $('#form-female').show(); 
        $('#form-male').show();
    }       
  });

});

why doesnt this work??? I dont get any error or anything it just sets the value to "<%= @profile.sex =>" I was googling and searching about on stack overflow and railscasts, the rails API, everything. Im seriously confused...

thanks for your help.

A: 

Try removing the tick marks around '<%= @profile.sex %>'.

If you need the tick marks around your value, try ' + <%= @profile.sex %> + '

Zachary
Even better, use @profile.sex.inspect or @profile.sex.to_json to prevent any stray quotation marks from breaking your script.
jdeseno
@Zachary:got it working, thanks.@jdeseno:Will do.
Stefano
A: 

You may want to take a look at jsvars. I am using it in one of my projects and it's pretty great. You can set your javascript variables right in the controller by assigning to a hash:

jsvars[:profile_sex] = @profile.sex

then you could do $("#profile_sex").val(profile_sex); in your script. It might solve your problem and make things prettier at the same time.

Just a thought!

Mike Williamson
thanks man, i will definately check it out!
Stefano