一旦成功上传了多个图像和格式如下,如何从carrierwave获取这些URL?

时间:2019-03-08 22:31:21

标签: ruby-on-rails

{
    "image_url": [
      "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800936.jpg",
      "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800937.jpg",
      "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800938.jpg"
    ]
}

这是保存图像时我到自定义文件夹的路径:

def store_dir
       "images/folder1/#{model.uuid}"
end

这是我的参数许可:

def folder1_params
       params.permit({images: []})
end

我想要实现的是使图像URL与我上面提到的相同。但是我得到的是 "url": "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800936.jpg"

1 个答案:

答案 0 :(得分:1)

似乎您正在尝试以JSON的形式发送API调用。

我认为更改您的控制器将有助于获得这种格式。

通常,它将为您提供以下格式。

{
    "image_url": [
      { url: "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800936.jpg"},
      { url: "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800937.jpg"},
      { url: "/images/folder1/554adeec-1b54-45db-a911-a7fb878d1820/image-1525800938.jpg"}
    ]
}

所以我建议的最简单方法是 1.在模型中添加一个方法。

在控制器中,同时发送JSON响应。

render json: { data: model_name.merge(image_urls: image_urls.map(&:url)) }