Rails 3将Rails数组传递给使用javascript数组的javascript函数
我试图将rails数组传递给javascript函数。然后,该函数将使用javascript中的数组值,因此我需要将其保留为数组 以下是我传递数组的方式:Rails 3将Rails数组传递给使用javascript数组的javascript函数,javascript,arrays,ruby-on-rails-3,Javascript,Arrays,Ruby On Rails 3,我试图将rails数组传递给javascript函数。然后,该函数将使用javascript中的数组值,因此我需要将其保留为数组 以下是我传递数组的方式: "graphit([<%=@mpg_values.join(",") %>])" 如果不是值,则应为十进制数。我假设这是因为它是对数组的引用,所以我知道为什么我会得到混乱的值。如果我做了一些类似于_的事情,我会看到值,但它还有其他东西,比如表和文件名 有人知道如何将这个rails数组作为数组放到javascript函数中吗 提前
"graphit([<%=@mpg_values.join(",") %>])"
如果不是值,则应为十进制数。我假设这是因为它是对数组的引用,所以我知道为什么我会得到混乱的值。如果我做了一些类似于_的事情,我会看到值,但它还有其他东西,比如表和文件名
有人知道如何将这个rails数组作为数组放到javascript函数中吗
提前感谢您的帮助。因为这似乎仍然是一个问题,没有人解决它。开始
var js_array = [<%= raw @object.to_json %>];
var js_数组=[];
在这篇文章中,我建议过几次使用JSON,但每次都会得到类似的结果
[{“英里”:{“日期”:“2011-05-20”,“mpg”:“18.565887006952”},{“英里”:{“日期”:“2011-06-01”,“mpg”:“18.47116430932”}]
我真正想要的只是这个。。。[2011-05-2018.56][2011-06-0118.47]]
所以我和这样的助手一起处理
def chart_values()
@chart_values = '['
@mpg_values.each do |m|
@chart_values = @chart_values+'['+m.date.to_s+', '+m.mpg.round(2).to_s+'],'
end
@chart_values = @chart_values+']'
end
然后将chart_values()传递给javascript
可能不是最好的解决方案,但它以我需要的格式为我提供了所需的值。使用Ruby的collect
方法。
解决方案的更干净版本Xaxum如下:
def chart_values
@mpg_values.collect do |mpg_value|
[ mpg_value.date.to_s, mpg_value.mpg.round(2).to_f ]
end
end
[
[2011-05-20, 18.56],
[2011-06-01, 18.47]
]
collect
方法自动生成一个包含块结果的数组,因此您将得到如下结果:
def chart_values
@mpg_values.collect do |mpg_value|
[ mpg_value.date.to_s, mpg_value.mpg.round(2).to_f ]
end
end
[
[2011-05-20, 18.56],
[2011-06-01, 18.47]
]
我还将
mpg
值改为使用改为\u f
,它提供了一个数字而不是字符串。如果您使用的是HAML,您可以这样做:
var js_数组=#{object}
的答案有效,但如果希望将数组保存为常量而不是var
/let
,则会导致一些linter和IDE错误
下面的变体似乎可以工作,并且与我正在使用的linter和ide兼容
const js_array=JSON.parse(“”)代码>也许你可以简单地使用@mpg\u值。对于json
?@Ankit Soni当我使用json时,我得到这个[{“mile”:{“mpg”:“17.15613663144”},{“mile”:{“mpg”:“19.06539208592”},{“mile”:{“mpg”:“18.471164309032”}],所以我得到了额外的mile和mpg,就像在s中一样。我想我可以用javascript解析出来,但我认为有一种更简单的方法可以做到这一点。只调用@mpg_值。检查?我认为它返回的格式与JS数组相同。@Ankit Soni似乎做了与to_s相同的事情,给了我这个。。[#,非常感谢这个答案,我一直在寻找它!在我的情况下,不需要添加[]。Rails将添加它。因此var js#u array=;对我来说很好。它可能会帮助一些人。这是一个很好的解决方案,我需要将特定数组作为JSON返回。我重构了你的方法,并发布了一个答案来帮助其他人。