Rails 3将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函数中吗 提前

我试图将rails数组传递给javascript函数。然后,该函数将使用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返回。我重构了你的方法,并发布了一个答案来帮助其他人。