Ruby on Rails – 为多个模型渲染JSON
我正尝试从JSON中的多个模型渲染结果。 我的控制器中的以下代码只呈现第一个结果集:
def calculate_quote @moulding = Moulding.find(params[:id]) @material_costs = MaterialCost.all respond_to do |format| format.json { render :json => @moulding } format.json { render :json => @material_costs } end end
任何帮助将不胜感激,谢谢。
你可以这样做的一种方法是创build一个哈希与你想渲染的对象,然后将其传递给渲染方法。 像这样:
respond_to do |format| format.json { render :json => {:moulding => @moulding, :material_costs => @material_costs }} end
如果模型没有通过活动logging关联,那可能是您最好的解决scheme。
如果关联存在,则可以将:include
parameter passing给render调用,如下所示:
respond_to do |format| format.json { render :json => @moulding.to_json(:include => [:material_costs])} end
请注意,如果采取这种方法,您将不必在上面的部分中检索@material_costs
variables,Rails将自动从@moulding
variables中加载该variables。
控制器只能返回一个响应。 如果你想发回所有这些对象,你必须把它们放在一个JSON对象中。
怎么样:
def calculate_quote @moulding = Moulding.find(params[:id]) @material_costs = MaterialCost.all response = { :moulding => @moulding, :material_costs => @material_costs } respond_to do |format| format.json { render :json => response } end end
我做了类似的事情
respond_to do |format| format.html # show.html.erb format.json { render :json => {:cancer_type => @cancer_type, :cancer_symptoms => @cancer_symptoms }}
这是结果
{"cancer_type":{"created_at":"2011-12-31T06:06:30Z","desc":"dfgeg","id":2,"location":"ddd","name":"edddd","sex":"ddd","updated_at":"2011-12-31T06:06:30Z"},"cancer_symptoms":[]}
所以它正在工作
感谢你们