0

我有一个文件(show.json.erb),我在其中将模型格式化为 json。在我的应用程序中,项目有许多步骤和许多图像,步骤有许多图像。

我希望能够仅包含项目的默认图像,我正在尝试使用“条件”来实现。但是,它似乎忽略了条件并发布了与项目相关的所有图像。如何仅包含正确的图像?

"projects":
<%= JSON.pretty_generate(@projects.order("updated_at DESC").as_json(only: [:title, :id, 
    :built, :updated_at], include: {images: {only: [:image_path], 
    :conditions=>['Step.find(image.step_id).name.eql? "Project Overview"', true] }  
})).html_safe %>
4

1 回答 1

2

我通过在我的项目模型中创建一个名为 image_path 的方法解决了这个问题:

(我需要返回三种图像的方法)

  def image_path
    images = Hash.new
    if first_step.images.present?
        images["url"] = first_step.first_image.image_path_url    
        images["preview"] = first_step.first_image.image_path_url(:preview) 
        images["thumbnail"] = first_step.first_image.image_path_url(:thumb) 
    end
    return images
  end

然后我将我的 JSON 编辑为如下所示:

   "projects":
        <%= JSON.pretty_generate(@projects.order("updated_at DESC").as_json(only: [:title, :id, :built], :methods=> [:image_path, :updated_at_formatted])).html_safe %>

这在我的网站上呈现如下:

    "projects":
                [
      {
        "built": true,
        "id": 115,
        "title": "Video Test",
        "image_path": {
          "url": "https://s3.amazonaws.com/...",
          "preview": "https://s3.amazonaws.com/...",
          "thumbnail": "https://s3.amazonaws.com/..."
        },
        "updated_at_formatted": "07/08/2013 10:31:19"
      },
...]

希望这对其他人有帮助!

于 2013-07-09T03:18:32.037 回答