2013-03-27 22 views
2

我需要渲染一個json輸出從控制器,我想包括我的圖像在json中的縮略圖版本。Rails json輸出載波縮略圖版本

如果我只使用:image_url渲染json,它會輸出完整的圖片url,如果我使用:image那麼它會列出所有可用的圖片(包括縮略圖)。

如何在json中渲染出圖像的縮略圖版本?

謝謝,

回答

6

你應該使用這樣的東西。

class ArtworkSerializer < ActiveModel::Serializer 
    attributes :id, :name, :image_url 

    def image_url 
     object.image_url(:thumbnail) 
    end 
    end 

然後在您的JSON響應中,您將有一個屬性:image_url

注意:您應該有一個定義的版本:您的載波上傳器中的縮略圖。

+0

Kulking您好,感謝您的回覆,我m使用activemodel_serializer來定製我的JSON輸出,當我使用image_url(:thumbnail)它不起作用。 (它在視圖中工作得很好) – 2013-03-27 08:04:57

+0

class ArtworkSerializer 2013-03-27 08:05:28

+0

@WilliamPramana,我相應地更新了我的問題。 – KULKING 2013-03-27 08:18:57

2

我建議你使用串行這樣的:

class YourSerializer < ActiveModel::Serializer 
    attributes(
    :id, 
    :image, 
    :small, 
    :medium, 
    :large 
) 

    def small 
    url(width: 116, height: 116, crop: "fill") 
    end 

    def medium 
    url(width: 640, height: 400, crop: "fill") 
    end 

    def large 
    url(width: 1000, crop: "fill") 
    end 

    private 

    def url(options={}) 
    options[:format] = "png" 
    options[:secure] = true 

    object.image_url(options) 
    end 
end 

,如果你去堅持使用縮略圖或已定義的版本只使用:

def url 
     object.image_url(:thumbnail) 
end