ERB不会在javascript脚本中执行

时间:2010-08-11 19:25:11

标签: javascript ruby-on-rails forms erb embedded-ruby

我的页面上有一个选择输入。此选择输入显示/隐藏表单中的字段。一切正常。但问题是,如果我提交表单并缺少一些必要的字段,那么之后就不会将select设置为正确的值。我只是不能让嵌入式红宝石工作!它总是逃避整个事情...在这里我的代码:

$(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();
    }       
  });

});

为什么这不起作用? 我没有得到任何错误或任何它只是将值设置为“&lt;%= @ profile.sex =&gt;” 我正在谷歌搜索和搜索堆栈溢出和railscasts,rails API,一切。我很困惑......

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您的JS脚本不执行嵌入式ruby代码。以下是如何解决此问题的说明:

http://bitprison.net/rails3_dynamic_javascript

答案 1 :(得分:0)

尝试删除'<%= @profile.sex %>'周围的刻度线。

如果您需要围绕值的刻度线,请尝试' + <%= @profile.sex %> + '

答案 2 :(得分:0)

您可能需要查看jsvars。我在我的一个项目中使用它,它非常棒。您可以通过分配哈希来在控制器中设置您的javascript变量:

jsvars[:profile_sex] = @profile.sex

然后你可以在你的脚本中执行 $(“#profile_sex”)。val(profile_sex); 。它可以解决你的问题,同时让事情变得更漂亮。

只是一个想法!