2015-06-02 6 views
1

Я пытаюсь переключить мой сервер Rails на AngularJS. До сих пор все работало нормально, но я не знаю, как получить URL-адрес изображения из Paperclip.Скрепка: как получить URL изображения

Текущие данные я получаю это:

{ 
    "id":52, 
    "name":"Samsung-Galaxy", 
    "cost":500, "brand":"Samsung", 
    "description":" Lorem Ipsum has been the industry's standard dummy text when ...", 
    "created_at":"2015-06-02T09:43:10.000Z", 
    "updated_at":"201509:43:10.000Z", 
    "avatar_file_name":"382727-samsung-galaxy-s-4-t-mobile.jpg", 
    "avatar_content_type":"image/jpeg", "avatar_file_size":20829, 
    "avatar_updated_at":"201502T09:43:10.000Z" 
} 

Но как отобразить изображение на HTML-странице.

+0

Покажите нам файл, в котором вы генерировать JSON –

+0

в моем угловом контроллере с помощью как $ scope.product = Product.get ({id: $ routeParams.id}) –

+0

и ответ API от сервера, который отправляет объект? –

ответ

1

Если у вас есть Paperclip настроить в модели следующим образом:

class Phone 
    has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" } 
end 

Вы можете легко получить различные изображения с Phone object, as described in the docs.

@medium_avatar_url = Phone.first.avatar.url(:medium) 

Конечно, вы не отправляли его через переменную экземпляра, а скорее применяли его в свой ответ JSON.

Быстрое исправление будет:

@product = Product.find(params[:id]) 
@product[:avatar_url] = @product.avatar.url(:medium) 
respond_with(@product.as_json) 

Но я высоко рекомендуем вам проверить the jbuilder gem, это даст вам гораздо больше гибкости. Существует также great Railscast, чтобы вы пошли!

+0

нормально, но как использовать объект класса в общедоступные файлы ..? –

+0

у вас наверняка есть контроллер, который отправляет переменные в ваш ответ JSON. Или как вы создаете свой JSON? –

+0

@product = Product.find (params [: id]) reply_with (@ product.as_json) –

-2

Добавить еще один URL поданного данный JSON поместить изображение реального путь на генерировать контроллер рельсов, как это ...

@product = Product.find(params[:id]) 
@product[:url] = @product.avatar.url(:medium) //paperclip method 
respond_with(@product.as_json) 
+0

, это именно то, что я сказал ..., а не размещение это снова, поскольку ваш собственный ответ принимает ответ, который сработал для вас. –

+0

Я обновил свой ответ, чтобы включить ваш quickfix, я все еще * очень * рекомендую вам проверить jbuilder. –