首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Ruby返回javascript对象

从Ruby返回javascript对象
EN

Stack Overflow用户
提问于 2011-03-30 14:09:39
回答 3查看 490关注 0票数 0

我们从ruby代码中返回以下JSON:

代码语言:javascript
复制
{
 "label":"CPU-7",
 "data":[[50,45,38,34]],
 "settings":{
            "seriesDefaults":{
                             "renderer":"$.jqplot.BarRenderer"
                             },
            "axes":{
                   "xaxis":{
                           "renderer":"$.jqplot.CategoryAxisRenderer",
                           "ticks":[50,45,38,34]
                           }
                   }
            }
}

但是,"$.jqplot.BarRenderer“是一个对象,我们不希望它以字符串的形式返回,有什么方法可以做到这一点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-31 03:20:25

这并没有直接回答您的问题,但提供了另一种选择。如果你一定要做你想做的事,请看我下面的说明

你可能不想你的ruby代码知道你的javascript对象的任何信息。相反,您可以维护某种type结构,这样,如果您返回的数据是barChart类型,您就可以用这种方式引用它。像这样的SOmething:

代码语言:javascript
复制
var chartTypes = {
  barChart: $.jqplot.BarRenderer
}

如果你回来了:

代码语言:javascript
复制
{"settings":{
  "seriesDefaults":{
    "type": "barChart"
  }
}

您可以使用

代码语言:javascript
复制
chartTypes[settings.seriesDefaults.type]

再说一次,我会避免让你的ruby知道你的javascript对象的任何信息或者你是如何实际渲染数据的。Ruby应该只提供数据,javascript选择如何处理这些数据。

笔记

要从json字符串中获取实际的对象,只需执行以下操作

代码语言:javascript
复制
// not recommended!!!
var obj = eval(settings.seriesDefaults.renderer);
票数 0
EN

Stack Overflow用户

发布于 2011-03-30 14:22:12

在您的视图中尝试raw方法。它将按原样呈现数据。

代码语言:javascript
复制
<%= raw @data%>

更新:

你是这样在控制器中呈现数据的吗?

代码语言:javascript
复制
render :json => @data.to_json
票数 0
EN

Stack Overflow用户

发布于 2011-03-31 03:10:38

我认为这是不可能的。JSON是一个简单的哈希,并且ruby不能包含javascript对象,也没有办法(afaik)来eval部分JSON。

因此,我建议使用类似的方法,让服务器呈现一个chart.js.erb而不是JSON,并将其放入您编写完整$.jqplot函数的部分中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5482533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档