【问题标题】:ruby variable in javascript in rails functionjavascript中的ruby变量在rails函数中
【发布时间】:2013-04-23 14:58:16
【问题描述】:

我正在尝试根据 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() 采用一个常量值,而不是在每次调用时重新评估它。如何将我的最新状态参数发送到此函数?

【问题讨论】:

    标签: javascript html ruby ruby-on-rails-3


    【解决方案1】:

    假设 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>
    

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2012-12-28
      相关资源
      最近更新 更多