我尝试了很多方法并遵循了Ryan Bates'指导,但无论我做什么,我仍然无法定义。
应用程序.html.erb
<body>
<%= content_tag :div, id: 'trackers', data: {trackers: User.count} do %>
<% end %>
</body
应用程序.js.erb
var datadump = ($('#trackers').data('trackers'))
console.log(datadump)
//returns undefined in console
查看页面源码可以看到变量
<div data-trackers="2" id="trackers">
我现在传递 User.count 只是为了简单起见,但我需要传递在应用程序 Controller 的 before_action 中实例化的 @trackers_count。一旦我弄清楚这里的问题,我应该能够解决这个问题。有什么建议吗?
更新 - 我已将所有变量简化为仅跟踪器,而不是 trackers_count 以防止语法错误并更新代码以反射(reflect)这一点。
ANSWER UPDATE - 我选择了正确的答案,因为如果您想传递 ASIDE FROM CURRENT_USER 的任何变量,这些方法非常有效。但是,在 JS 中你不能用 current_user 访问任何东西,因为它在窗口之前加载,所以它不知道 current_user 是谁。这真的很痛苦,但我只是做了很长时间,并通过传入 json 和 ajax 请求访问了我需要的信息。
最佳答案
我曾经做过:
var my_var = <%= User.count %>
console.log(my_var)
如果它是一个整数,这很好用。 但是,如果您想传递对象,请使用:
var my_var = JSON.parse(('<%= (@Users.count) == 0 ? "[]" : Users.first(10).to_json %>')
console.log(JSON.stringify(my_var))
关于javascript - rails 4 : Passing variables to javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870567/