0

私の配列がビューでこのようにとどまることを確認したい:

["Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue"]

これに変換される代わりに:

["Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue"]

私の erb ファイルのコードは、ハイチャート グラフ用です。

categories: <%= @days %>,

Rails では、次のraw方法を使用しました。

Messyからのアドバイスに従って" が Rails 3 コントローラーから返されて、erb で JavaScript 配列を表示し、Ruby 配列を使用します引用符のエスケープ

ただし、1 つのメソッドを使用するためにすべての ActionView をロードすると、Sinatra のオブジェクトが無効になるようです。

より良い方法はありますか?

4

1 に答える 1

2

配列でエスケープが発生する理由はわかりませんが、これは私が ERB ビューに入れたことです。

<% array = ["Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue"] %>

<p><%= array.inspect %></p>
<p><%= array.inspect.gsub(/"/, '\"') %></p>

これが出力でした:

[「火」「水」「木」「金」「土」「日」「月」「火」]

[\"火\", \"水\", \"木\", \"金\", \"土\", \"日\", \"月\", \"火\"]

しかし、本当の問題は、「Sinatra から JavaScript 関数にデータを取得するにはどうすればよいですか?」ということです。

class App < Sinatra::Base

  get "/array", :provides => :json do
    content_type :json
    ["Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue"].to_json
  end

end

もちろん、coffeescriptからコンパイルされたjQuery(または好みのライブラリ)を介して呼び出します:)

$.getJSON "/array", (res) ->
  # do something with the result

つまり:

  • 逃げることを心配する必要はありません
  • jQuery が JSON 応答の解析を処理するので、オブジェクトを操作するだけです。
  • テストしやすい
  • それに対して呼び出すWebアプリを使用してAPIをセットアップしました(つまり、Railsの方法ではなくSinatraの方法)
  • 他の人に似たようなことをすることで、助けを得やすくなります。
于 2012-12-26T05:32:43.973 に答える