繁体   English   中英

在多个位置使用Rails jbuilder文件

[英]Using rails jbuilder file in multiple locations

我正在构建一个Rails应用程序,并且我需要能够从api端点发送json,以便构建android应用程序。

目前,我可以从其他控制器获取所需的json,但我正在尝试将所有api调用压缩为一个api控制器。

我的JBuilder文件看起来像这样

json.array!(@rivers) do |river|
  json.extract! river, :id, :name, :section, :difficulty, :cfs, :details, :state, :put_in, :take_out, :picture
  json.has_alert has_alert? river
end

我的河流控制器索引操作当前正在使用它

  def index
    if !params[:commit].nil?
      @rivers = search params
      if @rivers.nil?
        @rivers = []
      end
    else
      @rivers = River.where(approved: true)
    end
  end

我有api river操作要使用的JBuilder文件的相同副本

  def rivers
    river_list = search params
    if river_list.nil?
      river_list = []
    end
  end

我希望能够通过jbuilder文件获取我的自定义json。 我已经能够使用api控制器渲染json

render json: river_list

但这给了我我实际上不想要的更多信息。 无论如何,无需使用jbuilder即可呈现自定义json。 重要的是我需要一个json数组

如果要渲染特定的jbuilder视图文件,则可以这样调用它

render json: "name_of_the_jbuilder_file"

所以你的河流方法看起来像这样

  def rivers
    river_list = search params
    if river_list.nil?
      river_list = []
    end
    render template: "jbuilder_filename"
  end

请注意,您的jbuilder文件需要实例varialbe @rivers ,但是rivers方法没有@rivers实例变量,因此这将失败,您应该首先实例化实例变量以成功呈现json。

编辑

抱歉,请使用render template: "jbuilder_filename"而不是render json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM