2010-12-19 81 views
0

我需要得到一个红宝石数组到一个javascript数组,我得到一个分析错误。json,rails,解析javascript中的错误

var characters = <%= @poop.to_json %>; 

这就是我如何嵌入到嵌入式JavaScript的红宝石,它会出现一个解析错误。我应该如何获得这个红宝石数组到JavaScript?

我将它嵌入到.html.erb文件中,所以ruby应该在javascript之前获取变量。

这是Safari浏览器控制台显示:

alt text

更新

我有一种形式,有三个领域的JS,CSS和HTML分别所以我愿意把我的JavaScript的形式然后将它放入标题中。

<head> 
    <%= @game.javascript %> 
</head> 

所以你可以看到我在JavaScript中嵌入红宝石,这是一个Ruby对象的输出,使红宝石的原因,没有得到它首先是,它已经得到了它,并处理<% =%>就像另一个字符串。

啊,我投票给你们所有人的帮助。谢谢!

+0

把它放在一个单独的Ruby脚本中,并发送适当的内容类型标题。 – 2010-12-19 23:57:26

+0

使这个答案和更多的解释请:) – s84 2010-12-20 00:06:23

+0

你能告诉我们一个更长的代码示例?如果这是一个erb文件,我不明白为什么'<%='没有被解析。 – Skilldrick 2010-12-20 00:11:53

回答

4

您正在处理.js文件,就像.erb文件 - 事实并非如此。 JavaScript不会解析JavaScript文件 - public中的任何内容都是按原样发送的。

@poop加入JavaScript的一种方法是使Rails动作呈现json,然后使用XHR加载该动作。

或者,您可以在<script>标记的HTML模板中输出@poop,然后从JavaScript中加载该脚本标记的内容。

+0

我假设它是一个js.erb文件或内联JavaScript。 – mark 2010-12-20 00:00:09

+0

我将它嵌入到.html.erb – s84 2010-12-20 00:02:36

+0

@Sam - 这很奇怪 - 我不明白'<%= %>'文本是如何进入Safari而不被解析的。 – Skilldrick 2010-12-20 00:04:38

0
var characters = "<%= @poop.to_json -%>"; 
+0

我没有downvote,但这没有奏效。 – s84 2010-12-20 00:04:35

+0

JavaScript中的Ruby语法? (我没有downvote) – Skilldrick 2010-12-20 00:05:14

+0

我看着它在这里工作,但也许这就是哈姆。尝试使用“<%= -%>”。 @skilldrick,js.erb可以正常工作,因为内嵌javascript。至于downvoter,评论!在这个问题中没有提到最佳做法。 – mark 2010-12-20 00:06:14

2

理想情况下,我们需要更多的信息来正确回答,但我会猜测一些东西来帮助你......

假设1:您正在使用ERB语法(那些“<%=”和“%>”).js文件中。这些不会被Rails解析为任何有意义的东西。

你想做什么,是在你的模板或视图中使用内联JS。从其他语言生成Javascript可能会非常棘手,请谨慎使用。

+0

我正在使用.html.erb – s84 2010-12-20 00:04:58