cześć,
pierwszy raz mam do czynienia z Carrierwave lub paperclipem.
Co chciałem osiągnąć:
- użytkownik może dodać trzy obrazki
- każdy z obrazków ma trzy wersje small medium large
- obrazki zachowują się w folderze public/id_ogłoszenia/1_large.png , 1_medium.png, 1_small.png, 2_large …
- nie mam doświadczenia jak powienienem zapisać nazwę pliku w bazie danych: jako pełna ścieżka do pliku? narazie jest to file: _original.png
Czy jest możliwe aby zamiast model.id wstawić dla każdego następnego pliku kolejny numer?
Narazie udało mi się tylko osiągnąć coś takiego:
[code=ruby]# GEMY: carrierwave, nested_form
file_uploader.rb
class FileUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :file
def store_dir
“photos/#{model.attachable_id}”
end
process :resize_to_limit => [500, 500]
process :convert => ‘png’
version :medium do
process :resize_to_limit => [250, 250]
process :convert => ‘png’
def full_filename (for_file = model.file)
“thumb_#{model.id}_medium.png”
end
end
version :small do
process :resize_to_limit => [50, 50]
process :convert => ‘png’
def full_filename (for_file = model.file)
“thumb_#{model.id}_small.png”
end
end
def filename
“#{model.id}_original.png” if original_filename #nie odkryłem jeszcze dlaczego w tym przypadku do bazy nie zostaje zapisany model.id
end
end
new.haml
= f.fields_for :photos do |photo_form|
= photo_form.label :file
%br/
= photo_form.file_field :file
= photo_form.link_to_remove "Remove this attachment"
= f.link_to_add "Add photo", :photos
show.haml
#title
%h1
= @ad.title
#ad_content
%b Treść ogłoszenia:
= @ad.ad_content
%br
- if @ad.photos.present?
-
@ad.photos.each do |p|
#photos
= image_tag("…/…/photos/#{@ad.id}/thumb_#{p.id}_small.png")[/code]
Jak żyć z tym kodem panie Premierze??
-
@ad.photos.each do |p|