2013-04-23 2 views
0

Я пытаюсь изменить цвет строки в соответствии с значением базы данных rails. Также в строке находится форма, которая является выпадающим меню. При изменении выбранного значения в раскрывающемся списке я обновляю измененное значение в БД с помощью формы submit, а затем вызываю функцию javascript, чтобы изменить цвет строки, используя новое значение через AJAX.переменная ruby ​​в javascript в функции rails

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}");]) %> 

В приведенном выше коде, что происходит в том, что # {lead.status}, который передается в getRowColour всегда совпадает т.е. начальное значение состояния, когда я первый загрузите страницу. Итак, сколько раз я меняю статус с помощью раскрывающегося списка, getRowColour ("") не изменяется.

источник страницы:

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

Как можно видеть на getRowColour() принимает постоянное значение, а не пересматривают его при каждом вызове. Как я могу отправить свой последний параметр статуса этой функции?

ответ

0

Предполагая идентификатор status выбора коробки является 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>