从ruby访问Javascript变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从ruby访问Javascript变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2377字,纯文字阅读大概需要4分钟。
内容图文
![从ruby访问Javascript变量](/upload/InfoBanner/zyjiaocheng/707/84c3f185f0774861943aae003ccbab84.jpg)
将数据从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>
解决方法:
我假设您指的是嵌入式Ruby文件,其中包含类似js.erb扩展名的内容.
那些实例变量,例如@element_id,用于生成一个javascript文件,然后运行客户端(即在浏览器中)
重要的是要指出,变量@element_id仅用于生成javascript文件,然后您可以基本上认为它在创建javascript文件后“消失”.
这就是为什么你可以将Ruby变量值“传递”到javascript文件中的原因.但是,当运行客户端返回到那些Ruby变量时,您无法传递javascript获取的值,因为它们基本上不再存在,因为它们的唯一目的是创建javascript文件.
因此,用于生成该文件的控制器操作实际上已经达到了它的目的,并且它和它的变量等不再可用.
现在,看起来你有一个javascript变量,获得了客户端,你想要在js alert中发布之前进行操作.
你有两个选择
1)你可以使用纯javascript操作它.
<script type="text/javascript">
function change_value(element){
idToAlert = element.id;
idToAlert++;
alert (idToAlert);
}
}
</script>
2)如果出于某种原因需要根据Rails应用程序可以访问的数据库值修改值,您可以将其发布到控制器并执行操作然后将其返回到javascript.
(注意:我在这里使用jQuery库来提高效率)
<script type="text/javascript">
function change_value(element){
$.ajax({
url: "/controller/update_element_id",
type: "POST",
data: {"old_element_id": <%= @element_id %>, "new_element_id": element.id},
success: function(response) {
alert (response);
},
error: function(response) {
console.log('error: ' + response);
}
});
}
</script>
Controller#update_element_id可能是JS POST请求的端点,如下所示.
def update_element_id
item = Model.where(element_id: params["old_element_id"]).first
item.update_attributes(element_id: params["new_element_id"])
render json: {element_id: item.element_id}
end
我希望这有帮助.很高兴提供任何额外的澄清.
内容总结
以上是互联网集市为您收集整理的从ruby访问Javascript变量全部内容,希望文章能够帮你解决从ruby访问Javascript变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。