保持Sinatra应用程序亮:显示原始数组而不加载ActionView

时间:2012-12-25 14:54:16

标签: ruby sinatra

我想确保我的数组在视图中保持这样:

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

而不是转换为:

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

我的erb文件中的代码用于highcharts图:

categories: <%= @days %>,

在Rails中,我使用了raw方法:

遵循Messy &quot returned from Rails 3 controller to viewUse ruby array for a javascript array in erb. Escaping quotes

的建议

然而,加载所有ActionView以使用一种方法似乎打败了Sinatra的对象。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我不知道为什么你现在在数组上有一些转义,但这就是我在ERB视图中的内容:

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

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

这是输出:

  

[“Tue”,“Wed”,“Thu”,“Fri”,“Sat”,“Sun”,“Mon”,“Tue”]

     

[\“Tue \”,\“Wed \”,\“Thu \”,\“Fri \”,\“Sat \”,\“Sun \”,\“Mon \”,   \ “星期二\”]

但真正的问题是“如何从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响应,因此您只需使用对象
  • 更容易测试
  • 你已经建立了一个API设置,其中一个Web应用程序正在调用它(即Sinatra方式而不是Rails方式)
  • 你会做一些与其他人更相似的事情,这将使得帮助更容易。