【发布时间】:2015-03-05 05:20:13
【问题描述】:
我尝试了多种方法并遵循Ryan Bates' 指南,但无论我做什么,我仍然无法定义。
application.html.erb
<body>
<%= content_tag :div, id: 'trackers', data: {trackers: User.count} do %>
<% end %>
</body
application.js.erb
var datadump = ($('#trackers').data('trackers'))
console.log(datadump)
//returns undefined in console
查看页面源码可以看到变量
<div data-trackers="2" id="trackers">
我现在传递 User.count 只是为了简单起见,但我需要传递 @trackers_count,它在应用程序控制器的 before_action 中实例化。一旦我发现这里的问题,我应该能够解决这个问题。有什么建议吗?
更新 - 我已将所有变量简化为仅跟踪器,而不是 trackers_count,以防止语法出现任何错误,并在此处更新代码以反映这一点。
ANSWER UPDATE - 我选择了正确的答案,因为如果您想传递除 CURRENT_USER 之外的任何变量,这些方法效果很好。但是,你不能在 JS 中使用 current_user 访问任何东西,因为它在窗口之前加载,所以它无法知道 current_user 是谁。这是一个真正的痛苦,但我只是做了很长的路,并通过传入 json 和 ajax 请求访问了我需要的信息。
【问题讨论】:
-
试试
$('#trackers_count').data('trackers-count'),用连字符代替下划线,就像在 HTML 中一样。 -
@Santhosh,没有变化..
-
你能链接到你正在谈论的特定轨道演员吗?
-
@patrick,我把它链接到了顶部。在他开始谈论 gon gem 并稍稍换档之前,您只需走到大约 4 分钟标记处。
-
您能在 content_tag 块中添加一些内容,例如“正在加载跟踪器...”吗?只是为了按照 railscast 获得它
标签: javascript ruby-on-rails variables ruby-on-rails-4