Как получить эти URL-адреса из carrierwave после успешной загрузки нескольких изображений и форматирования, как показано ниже?

#ruby-on-rails

#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:

Похоже, вы пытаетесь отправить как 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(amp;:url)) }