2012-04-11 5 views
4

Я не думаю, что я правильно понимаю это, но как я могу дать пользователям изображение по умолчанию?rails carrierwave default_url не работает

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

У меня есть изображение под названием default.png внутри моих изображений/резервный каталог. ive, увиденный онлайн, также люди меняют имя версии на что-то вроде «крошечного», но это, похоже, не работает для меня. что происходит? что такое название версии?

я пытался что-то вроде

def default_url 
     "/images/fallback/default.png" 
    end 

, но это не работает. что я недопонимаю? спасибо!

редактировать:

class ImageUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    include CarrierWave::RMagick 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    # Provide a default URL as a default if there hasn't been a file uploaded: 
    def default_url 
     ??????? 
    end 

    # Create different versions of your uploaded files: 
    version :thumb do 
    process :resize_to_fill => [80, 80] 
    end 

end 





class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :name, :email, :password, :password_confirmation, 
    :remember_me, :image, :remote_image_url, :image_cache 

    mount_uploader :image, ImageUploader 
end 

ответ

4

Например у вас есть загрузчик, как это:

class MyUploader < CarrierWave::Uploader::Base 

    version :thumb do 
    process resize_to_fill: [280, 280] 
    end 

    version :small_thumb, :from_version => :thumb do 
    process resize_to_fill: [20, 20] 
    end 

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

/images/fallback/default.png стенды для исходного изображения, для small_thumb версией пути /images/fallback/small_thumb_default.png, и так далее.

Если вы хотите, чтобы путь, где изображения на самом деле экономит после обработки, вам нужен store_dir

def store_dir 
    'public/my/upload/directory' 
    end 
+0

, который я могу назвать, а точнее? im все еще какой-то смущен. Я думал, что default_url - это то, где я ссылаюсь на изображение по умолчанию, а не где-нибудь из больших пальцев. Я должен сначала поместить изображение по умолчанию в другое место? im, использующий изображения, как правило, из моей версии: thumb и try thumb_path, но я не думаю, что это правильно .. – Sasha

+0

@ По умолчанию изображение по умолчанию используется при запрошенном изображении. Например, вы удаляете small_thumb, а оператор carrierwave будет отображать small_thumb_default.png. Вы можете избежать использования изображений по умолчанию, если уверены, что все изображения будут всегда на месте. –

+0

Хммм, его все еще не совсем работает. im, имеющий регистрационную форму регистрации, и когда пользователь подписывается, я хочу, чтобы изображение по умолчанию отображалось по крайней мере до тех пор, пока пользователь не изменит его. после того, как я зарегистрируюсь, я проверю свою базу данных, а мой столбец «image» по-прежнему равен нулю. если я вручную изменил свой профиль pic на изображение, тогда столбец «image» получит данные. есть ли способ в основном иметь данные «default.png» в столбце «изображение», когда пользователь сначала подписывается? – Sasha

11

При использовании трубопровода активов, то вам не нужно включать «изображение» в вашем пути к файлу, так как image_tag автоматически перейдет в папку assets/images, а затем найдите там имя файла. Таким образом, путь, который вам нужен в методе default_url, - это все, что приходит после папки с изображениями. В моем случае это был просто default.png, потому что у меня не было никаких дополнительных папок в папке с изображениями.

def default_url 
     'default.png' 
    end 
Смежные вопросы