Ruby单引号和双引号的区别

6

是否有一种 Ruby 的 to_s 方法可以将变量转换为单引号字符串而不是双引号字符串?

比如说我有一个变量:

date = Time.now
date.to_s

我希望输出结果为 '2012-08-01 22:00:15'。我该如何操作?或者有没有将“”字符串转换为''字符串的方法?
谢谢!
编辑 - 更多细节
我正在使用Rails在数据库中显示一些数据。我已经在我的控制器/模型中创建了@instanceVar作为数组的数组。
<% outer = [] %>
<% inner = [] %>

<% @instanceVar.each do |events| %>
  <% events.each do |event| %>
    <% inner << [event.date, event.total] %>
  <% end %>
  <% outer << inner %>
<% end %>

我需要将 event.date 转换成单引号字符串。

    <% inner << ['event.date', event.total] %>

这句话的意思是将event.date这个词添加到数组中,并且...

    <% inner << ["#{event.date}", event.total] %>

将日期用双引号括起来。 编辑2
<script>
  $.jqplot('trendingEvents', <%= outer %>,
  {
    #options go here
  });
</script>

你想通过这个实现什么? - Sergio Tulentsev
2个回答

7

字符串在Ruby中就是字符串。它们都是相等的,唯一的区别是你如何声明它们(单引号、双引号、here-docs和可能还有其他方式)。一旦你在一个变量中获得了一个字符串值,它被声明的方式就不重要了。

s1 = 'single quoted'
s1 # => "single quoted"

因此,如果你的字符串不离开 Ruby 领域(也就是说,你不将它们呈现为 JavaScript 或其他格式),你不必担心引号。

对编辑 2 的回应

看起来你需要更手动地构建你的 JSON 对象,而不是依赖于 Array#to_s 的默认行为。

要将 Ruby 字符串作为 JavaScript 单引号字符串文字进行输出,可以这样做:

<script type="text/javascript">
  var s = '<%= ruby_string %>';
</script>
< p > <%= %> 构造将不带引号地呈现传递的字符串。您需要自己提供引号。


是的,我明白,但我正在使用jqPlot创建一个带有日期x轴的折线图。date参数需要是一个字符串才能让dateAxisRenderer正常工作。如果我插入双引号,jqPlot会将引号转义为“"”。使用“html_safe”没有任何效果。 - XML Slayer
那么,你在哪里将这些变量呈现为JavaScript的部分? - Sergio Tulentsev
那么除了脚本之外没有其他方法可以做到这一点吗?我必须在内部运行我的循环,好的,谢谢。 - XML Slayer

1

使用双引号作为字符串构造函数可以插入变量。单引号用于字面值。一旦实例化,字符串就是一个字符串,显示引号最好留给调用者。


请查看我对Sergio的评论,了解为什么这很重要。 - XML Slayer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接