Ric*_*een 5 javascript ruby ruby-on-rails
我正在尝试将变量传递给方法.这是一个例子:
<script>
var b = 1
var c = "string" + "<%= method.a(b).to_s%>"
</script>
Run Code Online (Sandbox Code Playgroud)
这不起作用.
这有效:
<% @b = 1%>
<script>
var c = "string" + "<%= method.a(@b).to_s%>"
</script>
Run Code Online (Sandbox Code Playgroud)
任何想法,将不胜感激.
您无法在 Ruby 方法中计算 JavaScript 变量。此外,您当前的脚本必须位于资产管道之外,这通常是一个不好的做法。
一种简单的解决方案是将变量作为数据属性传递。您将运行您的方法,然后在 DOM 加载后使用 jQuery 传递结果。这允许您将 JavaScript 保留在资产管道中,并向其传递由 Ruby 服务器端评估的数据。
注意:@b应该在您的控制器上定义:
<div id="foo" data-bar="<%= method.a(@b).to_s %>"></div>
<script>
$(document).ready(function() {
var b = $(#foo).data('bar');
var c = "string" + b;
});
</script>
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用 Rails 中不显眼的 JavaScript异步渲染脚本。
| 归档时间: |
|
| 查看次数: |
4961 次 |
| 最近记录: |