Rails API - JSON包含多个项目和级别

时间:2017-06-02 14:06:18

标签: ruby-on-rails json

所以我正在创建一个API。我想用JSON回复我的调查问卷。

我的调查问卷:

  • 通过调查表_items提出了许多问题
  • 通过调查表_items有很多内容

我也有问题输入,属于一个问题。

我的API需要返回需要包含的问卷:

  • 问题 - 包括question_inputs
  • 内容

使用以下代码我可以包含问题或内容,但不能同时包含两者。

所以我的问题是:

  1. 如何同时包含问题和内容?
  2. 如何将question_input包含在问题中?

    def show

        @questionnaires = Questionnaire.find(params[:id])
        # @questions = @section.questions
        respond_to do |format|
          #format.json  { render :json => @questionnaires.to_json(:include => [:questions]), :callback => params['callback']}
          format.json  { render :json => @questionnaires.to_json(:include => [questionnaire_items: {include: :question,},], ), :callback => params['callback']}
        end
    end
    
  3. 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为你想要的是jbuilder(带有rails的默认gem)或活动模型序列化器。

使用jbuilder,您可以创建一个show.json.jbuilder视图,并构建api响应,类似于使用ERB进行html响应的方式。例如:

json.questionaires do 
  json.name @questionaire.name
  json.array! @questionaire.questions do |question|
    json.name question.name
  end
end

您可以在jbuilder上的文档中阅读更多内容:https://github.com/rails/jbuilder