当前位置: 首页 > 面试题库 >

Ruby on Rails-为多个模型渲染JSON

赫连子石
2023-03-14
问题内容

我正在尝试从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

任何帮助将不胜感激,谢谢。


问题答案:

一种执行此操作的方法是使用您要渲染的对象创建一个哈希,然后将其传递给render方法。像这样:

respond_to do |format|
  format.json  { render :json => {:moulding => @moulding, 
                                  :material_costs => @material_costs }}
end

如果未通过活动记录关联模型,则可能是最好的解决方案。

如果存在关联,则可以将:include参数传递给render调用,如下所示:

respond_to do |format|
  format.json  { render :json => @moulding.to_json(:include => [:material_costs])}
end

请注意,@material_costs如果采用这种方法,则不必在上一节中检索变量,Rails将从@moulding变量中自动加载它。



 类似资料:
  • 6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren

  • 问题内容: 我正在做一个Flask应用程序。我有一个登录区域,一个博客区域。如果要获取用户的登录名,我将呈现登录模板。但这不会呈现必须显示在登录区域下方的博客模板。 我将尝试使其更加清晰: 现在我有一个扩展它,并进入登录块。我有一个进入。如何同时渲染两者?当我这样做时,我只能在login.html或之一上调用它。 请帮帮我。如果你需要,我会提供更多详细信息。 问题答案: 你可能会以错误的方式考虑布

  • Tango默认核心不包含模板渲染功能,在官方中间件中包含两个渲染引擎中间件,一个是 Go标准模板引擎, 另一个是 Pongo2模板引擎

  • 在控制器里模板渲染最常用的方法是display,在CMF中支持如下的模板渲染方式: //不带任何参数 $this->display(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $this->display('edit'); 此种方式表示调用此控制器下的edit操作的模板; $this->display(':in

  • 模板是一个string文本,它用来分离一个文档的展现和数据,模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现,通常模板用来输出HTML。 让我们来看看一个简单的模板例子: <html> <head><title>Ordering notice</title></head> <body> <p>Dear {{ person_name }},</p> <p>Thank

  • 问题描述: 我使用three.js来渲染模型,然后我是打算实现分层渲染的效果,所以模型按照层数给到了我,所以就是多个模型一起渲染。 可以看到下面的图片,是有很多模型数据的。我是使用new THREE.Object3D() 或者 new THREE.Group() 来集合这些模型的,然后scene.add(floorGroup)。scene里面的确也是有这些模型数据的存在。 但是实际渲染的时候却只有