【问题标题】:Printing Ruby inside of javascript using haml使用haml在javascript中打印Ruby
【发布时间】:2014-01-15 19:36:31
【问题描述】:

在我的 javascript 代码中使用 haml 时尝试打印一些 ruby​​ 变量时遇到问题。

我有一个名为“@matrix”的变量,它是一个矩阵。我需要做的是打印给定矩阵的每一行,最终得到如下所示的内容:

  ['Year', 'Sales', 'Expenses'],
  ['2004',  1000, 400],
  ['2005',  1170, 460],
  ['2006',  660, 1120],
  ['2007',  1030, 540]

问题是我似乎无法使用我的 ruby​​ 变量获得正确的格式。我在stackoverflow中看到了一些类似的问题,但是即使在尝试了不同的方式来实现我所读到的内容之后,我也没有成功。

我的实际代码如下:

  ['Year', 'Sales', 'Expenses'],
  #{
    for i in 0..@matrix.row_count
      puts @matrix.row(i).to_a.to_s+","
    end
  }

这应该给我矩阵的每一行(这正是我想要的),但是我得到的错误是 for 循环无法识别,并且打印的是实际上 0..66.

任何解决此问题的方法都将不胜感激。 谢谢。

【问题讨论】:

  • 过去我不得不做的是使用助手来格式化数据并返回 JS 喜欢的值。
  • 我希望得到像我尝试过的那样简单的东西:/如果不可能,我想我将不得不使用帮助器

标签: javascript ruby-on-rails ruby haml


【解决方案1】:

你的问题是你不想打印那些字符串;你想插入它们。 for 循环只返回它循环的集合,这就是你得到“0..66”的原因。你想要一些能返回你正在打印的字符串的东西。

不要使用for循环,试试这样的:

(0..@matrix.row_count).map {|i| @matrix.row(i).to_a.to_s }.join(',')

(顺便说一句,我不建议使用Array#to_s 进行这样的输出。它的格式之前已更改,并且可以再次更改。我会考虑使用更像"[#{matrix.row(i).to_a.join(',')}]" 的东西,您可以在其中明确指定数组的格式格式。)

【讨论】:

  • 感谢 Chuck 的回复,我试过了,但我得到参数数量错误(0 代表 1)
  • @Waclock:哎呀,矩阵的东西用括号代替了括号。可能与此有关。
  • 我相信它应该是括号(它是类 Matrix 的一种方法)。我在 Rails 控制台上试过(做 @matrix.row(1) ),它没有问题)
  • @Waclock:是的,我就是这么说的。我不小心使用了括号而不是括号,这就是导致您遇到的参数错误的原因。我自己从未使用过 Ruby 的 Matrix 类,所以我只是偏离了您的原始代码并错误地复制了它。
  • 我以为你的意思是相反的,哈哈,我的错,它确实有效!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2014-03-16
  • 2017-04-24
  • 1970-01-01
相关资源
最近更新 更多