如何在Rails中使用:include选项呈现array.to_json?

时间:2011-07-29 10:14:35

标签: javascript ruby-on-rails ruby json

在我的控制器中我有:

def index
  # Array of Task objects
  @tasks = Task.get_tasks(current_user, params)

  respond_to do |format|
    format.html

    # Sends correct JSON but not including the 'author' object in it
    # format.json { render :json => @tasks.to_json(:include => [:author]) }

    # With this the JSON look correct but is interpreted as a string in the JavaScript code
    format.json { render :json => @tasks.map { |e| e = e.to_json(:include => [:author]) } }
  end
end

在渲染转换为JSON的数组时,您是否知道正确传递:include选项的“干净”解决方案?

修改

我正在使用 MongoDB

编辑(2)

我从mongoid (2.0.1)更新为mongoid (2.0.2)并且有效。 抱歉,麻烦。

1 个答案:

答案 0 :(得分:3)

to_json是多余的。我刚刚使用语法测试了它并使用了一些类似的代码:

format.json { render :json => @tasks, :include => [:author] }

这是rails 3.0.7。这也假设作者被设置为任务的belongs_to