2013-03-19 3 views
2

J'ai un modèle avec une pièce jointe de paperclip: l'imageRails paperclip fichiers statiques avec l'URL absolue

Modèle:

class HomeScreen < ActiveRecord::Base 
    before_create { !HomeScreen.has_record? } 
    validates :image, :attachment_presence => true 
    attr_accessible :image 
    has_attached_file :image 

    def self.has_record? 
    if HomeScreen.last 
     true 
    else 
     false 
    end 
    end 
end 

méthode show de mon conttroller doit retourner l'image avec un chemin relatif, mais JSON doit retourner url absolue avec domaine, comment puis-je faire cela?

Controller:

class HomeScreenController < ApplicationController 
    # GET /home_screen 
    def show  
    @home_screen = HomeScreen.last 

    respond_to do |format| 
     format.html 
     format.json { render json: @home_screen } 
    end 
    end 

Répondre

5

Selon un github issue, vous pouvez effectuer les opérations suivantes:

image_uri = URI.join(request.url, @home_screen.image.url) 

Ce sera un objet URI, qui peut être converti en un String avec son .to_s

1

Selon le même github issue, il est plus propre à utiliser ActionController::Base.asset_host il résulterait de l'aide:

def add_host_prefix(url) 
    URI.join(ActionController::Base.asset_host, url) 
    end 

Vous avez dans chaque suppose fichier /config/environments/<environment>.rb les éléments suivants:

Appname::Application.configure do 

    # .... 

    config.action_controller.asset_host = 'http://localhost:3000' # Locally 

    # .... 

end 
Questions connexes