Rails 3将rails数组传递给使用javascript数组的javascript函数

Xax*_*xum 19 javascript arrays ruby-on-rails-3

我试图将rails数组传递给javascript函数.然后该函数将使用javascript中的数组值,因此我需要将其保留为数组.

这是我传递数组的方式:

"graphit([<%=@mpg_values.join(",") %>])"
Run Code Online (Sandbox Code Playgroud)

这在HTML中产生了这个

"graphit([#&lt;Mile:0x6ff0cf0&gt;,#&lt;Mile:0x6ff0c18&gt;,#&lt;Mile:0x6ff0b58&gt;])"
Run Code Online (Sandbox Code Playgroud)

哪些不是值,它们应该是十进制数.我假设这是因为它是对数组的引用,所以我为什么要得到混乱的值.如果我执行类似to_s的操作,我会看到值,但它还有其他内容,如表格和字段名称.

有谁知道我怎么能把这个rails数组作为一个数组的javascript函数?

在此先感谢您的帮助.

bok*_*kor 73

因为这仍然是一个问题,没有人解决它.开始

var js_array = [<%= raw @object.to_json %>];
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢这个答案,我一直都在寻找它! (3认同)
  • 就我而言,无需添加[]。Rails将添加它。所以var js_array = &lt;%= raw @ object.to_json%&gt;; 对我很好。可能对某人有帮助 (3认同)

Xax*_*xum 0

按照这篇文章中的建议几次使用 JSON 总是给我这样的结果。

[{"mile":{"date":"2011-05-20","mpg":"18.565887006952"}},{"mile":{"date":"2011-06-01","mpg" :“18.471164309032”}}]

我真正想要的只是这个...... [[2011-05-20, 18.56][2011-06-01, 18.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
Run Code Online (Sandbox Code Playgroud)

然后将 Chart_values() 传递给 JavaScript。

可能不是最好的解决方案,但它以我需要的格式给了我所需的值。