繁体   English   中英

Rails函数中javascript中的ruby变量

[英]ruby variable in javascript in rails function

我试图根据Rails数据库值更改行的颜色。 该行内还有一个下拉菜单。 在下拉列表中更改所选值时,我通过表单提交将更改后的值更新到数据库,然后调用javascript函数以通过AJAX使用新值更改行颜色。

html.erb:

<%= f.select(:status, ["to call","didn't connect","confirmed","rejected"], {:selected => lead.status}, :onchange => %Q[$('#lead_form_#{lead.id}').submit();document.getElementById('lead_row_#{lead.id}').bgcolor=Application.getRowColour("#{lead.status}");]) %>

在上面的代码中,正在发生的是传递给getRowColour的#{lead.status}始终是相同的,即,当我第一次加载页面时,status的初始值。 因此,有多少次我通过下拉菜单更改状态,getRowColour(“”)不会更改。

页面的来源:

$('#lead_form_133').submit();document.getElementById('lead_row_133').bgcolor=Application.getRowColour("confirmed");

可以看出,getRowColour()取一个常数,而不是在每次调用时都重新评估它。 如何将最新的状态参数发送到此功能?

假设status选择框的ID为status考虑使用以下构造:

<%= f.select(:status, ["to call","didn't connect","confirmed","rejected"], 
             {:selected => lead.status} %>      

然后添加onchange处理程序逻辑:

<script type="text/javascript">
    $("#status").change(function() {
        $('#lead_form_#{lead.id}').submit();
        $('#lead_row_#{lead.id}')
          .css('background-color', Application.getRowColour($("#status").val())
    }); 
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM