我想将变量从控制器传递给js文件。我在这做什么:
#index.html.erb
<%= content_tag 'div', id: 'coords', data: { coords: @coords} do %>
<% end %>
#@coords is defined in maps#index
#@coords = Map.all
在浏览器控制台中,我可以轻松调用:
$('#coords').data('coords')
# or to acces 1st object
$('#coords').data('coords')[0]
# or to acces its attribute
$('#coords').data('coords')[0].lat
#Object {id: 1, vibration_level: 456, lat: "71.45543", lon: "53.43424", time_sent: "1994-05-20T00:00:00.000Z"…}
答案 0 :(得分:-1)
如果你的js文件是这样的:
app/assets/javascripts/your-js.js.erb
然后你可以使用你的变量:
<%= @coords %>
编辑:
我之前的回答是错误的,js是预编译的。
所以我的新答案是:
创建一个HTML
app/views/layouts/_page_scope.html.erb
<%
globalPageScope = {}
globalPageScope['coords'] = @coords if @coords
%>
<script type="text/javascript">
document.globalPageScope = <%= raw globalPageScope.to_json %>;
</script>
然后你可以从js:
访问该变量 globalPageScope.coords