在Rails中使用RABL渲染简单的JSON数组

时间:2014-02-14 12:41:10

标签: ruby-on-rails json rabl

我一直在试图弄清楚如何让RABL呈现一个非常简单的字符串JSON数组,例如:["my,"array","of","strings"]

控制器将是

class StringsController < ApplicationController
    responds_to :json

    def index
        @string = ['my','array','of','strings']
        respond_with @strings
    end

end

RABL视图必定以:

开头
collection @strings, root_object: false

但我无法弄清楚如何在没有节点名称的情况下输出字符串或在对象中输出...

显然有一个更直接的解决方案来实际提供JSON数组,就像我在下面提到的那样,但我特别感兴趣的是为什么这在RABL中看起来如此复杂!

class StringsController < ApplicationController

    def index
        render json: ['my','array','of','strings']
    end

end

3 个答案:

答案 0 :(得分:2)

要建立在Mark的答案之上,我认为它适用于此:

collection @string, object_root: false

node :value do |s|
  s 
end

注意我添加了:value,它是JSON记录的标签。

答案 1 :(得分:0)

尼尔,

这适用于任何数组,但对于您的特定数组,确切的答案是......

在index.json.rabl中使用以下代码

collection @string, object_root: false

node do |s|
  s 
en

在您的控制器中使用...

def index 
    @string = ["my","array","of","strings"]
end

答案 2 :(得分:-2)

你可以这样做,而且不需要用于显示反应的rabl视图。

def index
    @string = ['my','array','of','strings']
    respond_to do |format|
      format.json  { render :json => {:message => "Success", :my_string => @string } }
      format.xml
    end
  end