Rails - 如何在索引控制器方法中使用额外字段渲染json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails - 如何在索引控制器方法中使用额外字段渲染json相关的知识,希望对你有一定的参考价值。

我正在使用Rails 4.0.2paperclip在我的项目中上传图片。另外,我需要发送回形针的完整图像路径。所以我可以在我的show控制器方法中手动添加新字段并设置图像路径以获取特定记录。

节目

def show
  respond_to do |format| 
    format.html
    format.json { :json => JSON::parse(@demo.to_json.merge("new_field" => @demo.image_url.url).to_json}
  end
end

当我查看Json的任何记录时,这将显示出良好的效果。

{
  id: "1",
  name: "demo",
  new_field: "/demo/1/original/file.jpg"
}

在同一场景中,当我在index上请求controller方法时,我需要获取所有记录的回形针图像的完整图像路径

指数

def index 
  @demos = Demo.all
  respond_to do |format|
    format.html
    format.json { :json => Demo.all.to_json}
  end
end

我尝试了一些代码,但我不知道怎么写

def index 
  @demos = Demo.all
  @demos.each do |demo|
     new_field = {"new_field" => @demo.image_url.url}
     # After I stucked with logic, how to uppend with 'demo'.
  end

  respond_to do |format|
    format.html
    format.json { :json => Demo.all.to_json}
  end
end

如何迭代我的个人Demo模型以及如何将完整图像路径合并到每个记录中。

答案

我找到了我的问题的解决方案,

def index 
  @demos = Demo.all
  @demos_data = []
  @demos.each do |demo|
    new_field = {"new_field" => @demo.new_field.url}
    demo = JSON::parse(demo.to_json).merge(new_field)
    @demos_data << demo
  end

  respond_to do |format|
   format.html
   format.json { :json => @demos_data}
  end
end
另一答案

我建议你使用两种方法,1)使用主动模型序列化器来暴露json响应。 2)使用jbuilder库来公开自定义字段。你还需要帮助,请告诉我。

另一答案

试试这个:-

def index 
  @demos = Demo.all
  @demos_data = []
  @demos.each do |demo|
    demo["new_field"] = @demo.image_url.url
    @demos_data << demo
  end

  respond_to do |format|
   format.html
   format.json { :json => @demos_data}
  end
end
另一答案

也许你可以尝试:

def index 
  @demos = Demo.all
  @demos.map do |demo|
    new_field = {"new_field" => @demo.image_url.url}
    demo.attributes.merge(new_field)
  end

  respond_to do |format|
    format.html
    format.json { :json => @demos}
  end
end

attributes方法返回所有对象属性的哈希值,只需要将新的键值合并到返回的哈希值中。

以上是关于Rails - 如何在索引控制器方法中使用额外字段渲染json的主要内容,如果未能解决你的问题,请参考以下文章

Rails自定义路由,如何删除?id =

如何使用用户定义的字段数制作表单? - Ruby on Rails

如何在 Rails 验证错误中突出显示字段

向 Rails 模型添加额外字段以减少不必要的数据库查询

如何使用 sunspot solr 索引文本(大数据)字段

Rails 如何在使用外部 API 创建时保存数据?