6

to_s変数を二重引用符ではなく単一引用符で囲まれた文字列に変更するRubyメソッドはありますか?

私が持っていると言う

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] %>

日付を二重引用符で囲みます。

EDIT2

<script>
  $.jqplot('trendingEvents', <%= outer %>,
  {
    #options go here
  });
</script>
4

2 に答える 2

7

文字列はルビーの文字列です。それらはすべて等しいです。唯一の違いは、それらをどのように宣言するかです(一重引用符、二重引用符、here-docsなど)。変数に文字列値を取得したら、それがどのように宣言されたかは関係ありません。

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

したがって、文字列がルビーランドを離れない場合(つまり、JavaScriptなどとしてレンダリングしない場合)、引用符について心配する必要はありません。

編集2への応答

デフォルトの動作に依存するのではなく、より手動でjsonオブジェクトを構築する必要があるようです。Array#to_s

ルビー文字列をjavascriptの一重引用符で囲まれた文字列リテラルとして出力するには、次のようにします。

<script type="text/javascript">
  var s = '<%= ruby_string %>';
</script>

<%= %>コンストラクトは、渡された文字列を引用符なしでレンダリングします。あなたは自分で見積もりを提供します。

于 2012-08-02T21:45:31.743 に答える
1

文字列コンストラクタとしての二重引用符を使用すると、変数を補間できます。一重引用符はリテラル用です。前述のように、文字列はインスタンス化された文字列であり、引用符の表示は呼び出し元に任せたほうがよいでしょう。

于 2012-08-02T21:50:09.530 に答える