Я использую Rails в качестве бэкэнда и React в качестве внешнего интерфейса.
Я загружаю фотографии блюд через Carrierwave в мое AWS S3 ведро .
Когда я это делаю, вот что я получаю от консоли рельсов:
m = Meal.first
[...]
m.photo
=> #<PhotoUploader:0x007fef8e4381b0 @model=#<Meal id: 1, name: "Burger Caviar", price: "5.99", original_price: "8.90", description: "Delicieux Burger, parfume au caviar d'aubergine et...", ingredients: "Pain, steack de boeuf, caviar, salade, tomates, oi...", allergenes: "aucun", category: "Français", week_day: 1, photo: "Photo_May_21_11_45_12_PM_1024x1024.jpg", vacation_mode: false, restaurant_id: 1, created_at: "2018-11-06 13:00:46", updated_at: "2018-11-06 13:00:46">, @mounted_as=:photo, @file=#<CarrierWave::Storage::Fog::File:0x007fef8e433c50 @uploader=#<PhotoUploader:0x007fef8e4381b0 ...>, @base=#<CarrierWave::Storage::Fog:0x007fef8e433ea8 @uploader=#<PhotoUploader:0x007fef8e4381b0 ...>>, @path="uploads/Photo_May_21_11_45_12_PM_1024x1024.jpg", @content_type=nil>, @filename=nil, @cache_id=nil, @versions={}, @storage=#<CarrierWave::Storage::Fog:0x007fef8e433ea8 @uploader=#<PhotoUploader:0x007fef8e4381b0 ...>>>
m.photo.path
=> "uploads/Photo_May_21_11_45_12_PM_1024x1024.jpg"
m.photo.url
=> "https://take-a-meal-images.s3.amazonaws.com/uploads/Photo_May_21_11_45_12_PM_1024x1024.jpg"
Мне на самом деле нужно m.photo.path
, чтобы передать свое изображение (через imgix ) клиенту в React.
Однако, когда я звоню по телефону через axios и console.log
в ответ, все, что я получаю, это URL фотографии:
data: Array(9)
[...]
0:
created_at: "2018-11-06T14:00:49.373+01:00"
id: 10
name: "Burger Nordiste"
photo:
url: "https://take-a-meal-images.s3.amazonaws.com/uploads/header-image.jpg"
[...]
Мой controllers/meals_controller.rb
:
class MealsController < ApplicationController
def index
@meals = Meal.all
render json: @meals.to_json(include: :restaurant)
end
end
так почему рельсы служат только photo.url
и как я могу изменить это, чтобы получить доступ к photo.path
в React?