2015-01-12 1 views
2

에 대한 전체 URL 응용 프로그램의 이미지 업로드에 CarrierWave을 사용하고 있습니다.이 응용 프로그램은 backbone.js 클라이언트 응용 프로그램에서 차례로 사용됩니다. 사용 가능한 기본 이미지가 없을 때 /assets/default.png을 반환합니다. 차례대로 http://dev-server:3000/assets/default.png이어야합니다. 구성 설정은 다음과 같습니다.CarrierWear 기본 이미지

# config/environments/development.rb 
CarrierWave.configure do |config| 
    config.asset_host = "http://dev-server:3000" 
end 

# Image Uploader 
.... 

def default_url 
    "/assets/default.png" 
end 

나는 어디로 가고 있습니까?

답변

4

에 설치 asset_host에 내 대답 업데이트 [편집 (업데이트 대답)]

설정 레일.

Rails.application.configure do 
    . 
    . 
    config.asset_host = 'http://dev-server:3000' 
end 

은 그럼 당신은 asset_url 방법 또는 도우미의 image_url 방법을 사용할 수 있습니다. 이 이미지이므로 app/assets/images 폴더에 이미지를 놓고 image_url을 사용하는 것이 좋습니다.

http://dev-server:3000/images/default.png 

콘솔에서 그것을 시도 할 수 있습니다 :

ActionController::Base.helpers.image_url("default.png") 

이렇게하면 다음과 같은 URL을 제공 할 것입니다. 나는 가정하고

def default_url 
    ActionController::Base.helpers.asset_path("default.png") 
end 

을 :

[올드 대답]

Carrierwave Documentation 보면, (Carrierwave가 자동으로 기본 URL에 asset_host perpend하지 않음)과 같아야합니다 당신의 default_url 방법처럼 보인다 asset_host이 Rails 구성에서 올바르게 설정되었습니다. 그렇지 않은 경우 그렇게하십시오.

+0

당신이 내 질문에서 볼 때, 내가 설정을 가지고있는'config.asset_host = "HTTP : // dev-server : 3000 "' 그리고'default_url' 메소드에'ActionController :: Base.helpers.asset_path ("default.png")'를 포함 시키려고 시도했지만 여전히 완전한 url 경로를 제공하지 않습니다. – swaroopsm

+0

Carrierwave 설정에 'asset_host' 설정이 있습니다. 레일스 설정 (Carriwave 블록 외부)에 추가하려고 했어요. 참고로 [Rails Configuration] (http://guides.rubyonrails.org/configuring.html#rails-general-configuration)을 참조하십시오. 나는 이것을 바탕으로 내 대답을 편집 중입니다. – San

+0

@Sam 자산 파이프 라인을 사용하고 있습니다. 그리고 내가 쓴 대답에 대한 의견이 있으십니까? – swaroopsm

0

나는 carrierwave 코드를 살펴봄으로써이 문제를 해결했다.

def default_url 
    "#{asset_host}#{ActionController::Base.helpers.asset_path("default.png")}" 
    end 

은 또한 당신이 당신의 각각의 환경 파일의 asset_host 구성을 포함해야합니다 이것은 내가하고 결국 것입니다.

+0

답을 업데이트했습니다. 확인 해봐. – San

6

레일 5 API와 Carrierwave도 사용하고 있습니다.

행운의 추측이 나를 위해 일하고있다.

나는 app/uploaders/image_uploader.rb 안에 파일을 가지고 있습니다.

asset_host 구성이이 파일 안에 설정되어있다 (적어도 나를 위해 작동) :

# encoding: utf-8 

class ImageUploader < CarrierWave::Uploader::Base 

    ... 

    def asset_host 
    return "http://localhost:3000" 
    end 

end 

희망이이 문제가 미래에 다른 사람을 위해 작동합니다.

+0

이 파일은 Rails 5 API 모드에서 사용되었습니다. development.rb에서 config.asset_host를 추가하지 않았습니다. – tommyalvarez

1

나는 당신의 아이디어 몇 가지 추천 할 것입니다 :

내가 : 사용자 환경 z.B.에서 호스트를 넣어 development.rb

config.asset_host = 'http://localhost:3000' 

II : config/initializers/carrierwave에 파일을 만듭니다.

# config/initializers/carrierwave.rb 
CarrierWave.configure do |config| 
    config.storage = :file 
    config.asset_host = ActionController::Base.asset_host 
end 

III 경우 rb :

def default_url 
    "#{asset_host}/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 

IV : 당신의 업 로더를 수정 RESTART 서버