![](/img/trans.png)
[英]How to access an instance variable inside a Javascript function in Ruby on Rails application?
[英]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.