2012-06-25 1 views
2

에 전무로 변환 할 수는 없지만CarrierWave는 업로드 (즉 내가 무엇을 생각 적어도)까지 작동 난 그냥 carrierwave와 simpel 이미지 업로드를 수행 할 문자열

on "/entries" do 

entries = Entry.all 

entries.each do |entry| 
    @foobar = "#{@foobar} entry.image.url" 
end 

"#{@foobar}" 

end 

class ImageUploader < CarrierWave::Uploader::Base 
    def store_dir 
     "public/user_uploads" 
    end 

    def extensions_white_list 
     %w(jpg jpeg gif png) 
    end 

    storage :file 
end 

class Entry 
    include DataMapper::Resource 

    property :id, Serial 
    property :text, Text 
    property :created_at, String 

    mount_uploader :image, ImageUploader 

    belongs_to :user 
end 

그래서 내가 절대적 있습니다

난 그냥 다음과 같은 오류 여기

TypeError - can't convert nil into String: 
     /home/peer/.gem/ruby/1.9.1/gems/carrierwave-0.6.2/lib/carrierwave/uploader/url.rb:22:in `expand_path' 
     /home/peer/.gem/ruby/1.9.1/gems/carrierwave-0.6.2/lib/carrierwave/uploader/url.rb:22:in `url' 
     /home/peer/.gem/ruby/1.9.1/gems/carrierwave-0.6.2/lib/carrierwave/uploader/versions.rb:159:in `url' 
     /home/peer/.gem/ruby/1.9.1/gems/carrierwave-0.6.2/lib/carrierwave/uploader/default_url.rb:8:in `url' 
     /home/peer/.gem/ruby/1.9.1/gems/carrierwave-0.6.2/lib/carrierwave/uploader/url.rb:27:in `to_s' 
     /home/peer/Project/myapp/controllers/view_entries.rb:4:in `block in <top (required)>' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `block in compile!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `[]' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `block (3 levels) in route!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:801:in `route_eval' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `block (2 levels) in route!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:822:in `block in process_route' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in `catch' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in `process_route' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:784:in `block in route!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in `each' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in `route!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in `dispatch!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in `block in call!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `block in invoke' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `catch' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `invoke' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in `call!' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:205:in `context' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb:200:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/logger.rb:15:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/head.rb:9:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/showexceptions.rb:21:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `block in call' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1416:in `synchronize' 
     /home/peer/.gem/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `call' 
     /home/peer/.gem/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service' 
     /usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
     /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
     /usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 

을 내 엔트리 모델입니다 얻을 여기에 무엇이 잘못되었는지 전혀 모른다 ...

왜 이미지의 URL을 가져올 수 없습니까?

+1

지금 같은 문제에 봉착 Carrierwave의 루트 경로를 설정해야 할 수도 있습니다. 업로드가 작동했으며 파일이 디스크에 있습니다. @ record.logo.url에 액세스하려고하면이 오류가 발생합니다. –

답변

1

다음 코드 앞에 @foobar 초기화해야합니다

entries.each do |entry| 
    @foobar = "#{@foobar} entry.image.url" 
end 

가 @foobar는 마지막 항목의 이미지 URL의 값을 취할 것이라는 점을 알고 있어야합니다. 지난 시간 동안 그것을 알아낼 수 없습니다

+0

사실 이것은 일종의 예제 코드 일뿐입니다 (이것은 실제로 코드가 아니며 entry.image.url을 얻을 수 없습니다) (심지어 전에 @foobar를 초기화하더라도) Entry.last.image도 아닙니다. .url이 오류없이 작동합니다 –

+1

실제 코드 게시 ... –

+0

좋아, 여기에 http://paste42.de/ed4b58c4027f34e92f7ff6a6d6647c14/3865/ –

0

당신은, 예컨대 :

CarrierWave.configure do |config| 
    config.root = Rails.root 
end