我正在尝试将数据从控制器传递给javascript。你就是这样做的,
respond_to do |format|
format.html
format.json { render json: {data: @data} }
end
然后在你的视图文件中,你应该这样做:
<%= javascript_tag do%>
window.data = <%= raw @data.to_json %>
<%end%>
<script>
for( i = 0; i < data.length; i++ ) {
alert(data[i]);
}
</script>
有道理。正确?
但是,上面的代码是在json代码中只传递一个变量,即数据变量时。我需要做的是将多个变量传递给我的javascript代码。
应该这样做:
respond_to do |format|
format.html
format.json { render json: {data: @data, data1: @data1, data2: @data2} }
end
现在, - 我应该如何访问data1&amp;我的视图文件中的data2变量? - 我需要修改window.data吗?我尝试了下面的代码但它没有成功。给我论证错误。
<%= javascript_tag do%>
window.data = <%= raw @data.to_json, @data1.to_json %>
<%end%>
任何线索都会受到赞赏。
干杯!
答案 0 :(得分:6)
render json
调用将呈现单个对象,因此请尝试将所有数据存储在单个JSON对象(或数组)中:
respond_to do |format|
format.html
format.json { render json: {all_data: {data: @data, data1: @data1, data2: @data2}}}
end
在前端:
<%= javascript_tag do%>
window.data = <%= raw @all_data.to_json %>
<%end%>
现在window.data
应该包含window.data.data
,window.data.data1
,window.data.data2
所需的一切。