将数据从Ruby传递到Javascript很容易,例如:
<script type="text/javascript">
function change_value(val){
alert ("<%= @alert %>")
}
}
</script>
这将发送一个警报,其中包含存储在控制器中警报变量的数据。
但是我不知道它是如何工作的,例如,如果我需要将一个元素id
存储到一个控制器变量中:
<script type="text/javascript">
function change_value(element){
<% @element_id = *** element.id *** %>
alert ("<%= @element_id %>")
}
}
</script>
真正的交易接下来,由***投降的代码应该是所需的javascript值(@billeable_qts是哈希):
<script type="text/javascript">
function change_value(product){
<% @billeable_qts[****product.id****] = ***document.getElementById('product.id').value**** %>
<% @billeable_qts.each do |key, value| %>
<% alert = "Key = " + key + ", value: " + value.to_s%>
alert ("product: <%= alert %>")
<% end %>
}
</script>
答案 0 :(得分:1)
正如大家所建议的那样,你不能按照自己想要的方式去做。
一个简单的解决方法是创建一个方法(或使用已经存在于控制器中的方法),然后对该方法执行ajax调用。
例如,对第一个产品的update方法执行ajax调用,并在params中传入要更新的变量:
var value = document.getElementById('product.id').value
var id = 1
$.ajax({
url: '/products/' + id,
type: 'POST',
data: {
product: {
value: value,
}
},
success: function(result) {
location.reload();
},
error: function(err) {
console.log(err);
}
})