Paperclip - problem z wyświetlaniem

Witam!

Jestem jeszcze raczkujący w temacie RoR i z góry przepraszam jeśli ktoś poczuje się urażony prostotą mojego pytania, ale proszę o pomoc. Otóż zainteresowałem się ostatnio paperclipem i użyłem go do tworzenia avatarów na swojej stronce. Wszystko pięknie, ale gdy spróbowałem użyć tego narzędzia znowu budując galerie, nie sprostałem sprawie. Obrazki dodają się do bazy, wszystko pięknie, ale czy mógłby mi ktoś powiedzieć jak powinien wyglądać kod który wyświetli je wszystkie?

MODEL

class Gallery < ActiveRecord::Base
has_attached_file :picture
end

WIDOK DODAWANIA

<% form_for(:gallery , :html => {:multipart => true}) do |f| %>
<%= f.label :picture %>

<%= f.file_field :picture %>
<%= submit_tag “Aktualizuj”, :class => “submit” %>

<% end %>

WIDOK WYŚWITLANIA

  <%= image_tag :gallery.picture.url %>
  <%= link_to :gallery.picture.url, :gallery.picture.url %>

Z góry dziękuję.

Ale jak wyświetli wszystkie? Znaczy każdy z nich po kolei, no to zwykła pętla loop, for czy jak tam chcesz ;]

@galleries.each do |gallery| image_tag gallery.picture.url(:small) end
Ten :small w nawiasie to opcjonalny, jeśli masz jakieś dodatkowe style np dla miniaturek, jak nie to bez tego w nawiasie.

mam dodatkowe style, ale mniejsza o to. no właśnie próbowałem w podobny sposób ale niestety wyświetla się

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

W bazie wygląda to zupełnie normalnie, migracja:

class AddAttachmentsPictureToGallery < ActiveRecord::Migration
def self.up
add_column :galleries, :picture_file_name, :string
add_column :galleries, :picture_content_type, :string
add_column :galleries, :picture_file_size, :integer
add_column :galleries, :picture_updated_at, :datetime
end

def self.down
remove_column :galleries, :picture_file_name
remove_column :galleries, :picture_content_type
remove_column :galleries, :picture_file_size
remove_column :galleries, :picture_updated_at
end
end

Co robię nie tak? dziękuję za zainteresowanie.

Pokaż kod kontrolera, problemem jest prawdopodobnie niezainicjowana zmienna której używasz w widoku (próbujesz wywołać metodę each na nilu). Do widoku wkleiłeś dosłownie to, co gotar napisał?

musisz mieć dostępna zmienną @galleries, jak kolega wyżej pisze. Coś takiego musisz mieć.

@galleries = Gallery.all

To szkielet, możesz a nawet powinieneś to połączyć z jakimś stronicowaniem, by nie ładować niewiadomo ile obiektów na raz, no chyba że masz ich niewiele.

Panowie, dwa słowa do Was: DZIĘKI WIELKIE :slight_smile: Faktycznie problemem była nie tyle niezainicjowana, co źle zainicjowana zmienna :slight_smile: Poprawiłem tak jak doradził Gotar i wszystko gra i buczy. Obiektów trochę jest i faktycznie stronicowanie będzie tu bardzo dobrym rozwiązaniem, z którym mam nadzieję, że już sobie poradzę, a w jeśli nie, to w razie czego wiem, że jest w necie miejsce w którym znajdą się pomocne i kompetentne, gotowe pomóc osoby. Jeszcze raz wielka dziękówka.