【发布时间】:2018-06-28 01:46:01
【问题描述】:
将数据从 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>
【问题讨论】:
-
你想对控制器中的变量做什么?如果你只是想提醒这个值,你可以只使用普通的javascript,它都是客户端
function change_value(element) { alert(element.id) }如果你想在控制器中用它做一些事情,例如向数据库中添加一些内容,发送电子邮件。您必须向该控制器操作发送请求,例如function change_value(element) { doPostRequestTo('controller/change_value?value=' + element.id) } -
但我不知道它是如何反方向工作的, js 可以向您的 Rails 服务器发送包含您想要的任何信息的请求。该主题称为ajax。 如何访问 javascript“元素”的 id 属性 -- 使用 js 代码,您可以使用元素的 id 检索页面上的任何元素。例如,如果您想在用户单击按钮后发回文本字段的值,那么您的 js 代码可以将 onclick 处理程序函数附加到按钮,该按钮使用(由 rails 插入)@element_id 来检索文本字段的价值。
-
Rails 提供了write ajax code in your views 的方法,但我发现它过于复杂,以至于我只能自己手动编写 js。最重要的是,要成为一名 Web 开发人员,您必须了解很多不同的语言:html、js 和 jQuery,以及像 ruby 和 rails 这样的服务器端语言。至少。
-
我需要这个,因为我试图用元素 id 和用户值填充散列,只有当用户添加它时,一次可以输入许多值,我需要与这些值交互和标识符。谢谢!!
标签: javascript ruby-on-rails ruby