0

我的问题可能有一个简单的解决方案,但密集的谷歌搜索却一无所获。

我有一个ajax调用:

$.get(path,{ section_id: "a", field_id: "b"})
 .done(function(data) {alert(data);})
 .fail(function() { alert("error"); });

这个 ajax 调用转到指定的控制器并执行一个查询,返回一个 ActiveRecord::Relation 对象。到现在为止还挺好。现在,我想做的是将此 ActiveRecord::Relation 对象作为 json 返回给 done 函数。我怎样才能做到这一点?感谢所有帮助者!

4

3 回答 3

1

我假设您想从关系中返回一个对象,而不是活动记录类。在您的控制器中,您应该以适当的格式呈现您的对象,例如:

respond_to do |format|
    format.json { render json: @your_object}
end
于 2013-03-13T14:54:49.310 回答
1

如果要返回 ActiveRecord::Relation 对象中使用的条件哈希,可以这样做:

@relation.where_values_hash.to_json

于 2013-12-15T14:03:57.470 回答
0

做这样的事情

@post = Post.where(id: params[:id])
# @post at the moment is an AR::Relation
render json: @post, status: :ok

实际上只会返回序列化为 JSON 的记录。实际上,您可以通过执行以下操作在 rails 控制台中对此进行测试:

@record = YourModel.where(some_condition: some_parameter)
@record.class #=> ActiveRecord::Relation
@json_record = @record.to_json
@json_record.class #=> String
# @json_record will be the JSON representation of whatever the Relation fetched for you.
于 2013-03-13T15:07:39.480 回答