0

我正在尝试根据 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} 始终相同,即当我第一次加载页面时状态的初始值。所以有多少次我通过下拉菜单更改状态,getRowColour("") 不会改变。

页面来源:

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

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

4

1 回答 1

0

status假设选择框的 idstatus考虑使用以下结构:

<%= 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>
于 2013-04-23T06:30:21.180 回答