Na początek witam wszystkich. Do tej pory forum tylko czytałem, lecz po kilkudniowej walce zostałem zmuszony do poproszenia Was o pomoc.
Na początek kilka faktów. W mojej aplikacji posiadam Miejsca/Obiekty (model Place) oraz Zdjęcia (model Photo) z relacja wiele do wielu.
Moje środowisko to linux debian, rails (2.3.5), nginx (0.8.45) z passenger (2.2.15). do tego używam thinking_sphinx (1.3.16) oraz paperclip (2.3.3).
W kontrolerze Places posiadam akcję show w, której nic nadzwyczajnego się nie dzieje: @place = Place.find(params[:id])
W widoku posiadam linijkę, która ma za zadanie wyświetlić zdjęcia przypisane do miejsca:
<%= render :partial => "photos/photo_list_link", :collection => @place.photos, :as => :photo %>
No i wszystko działa ładnie i pięknie do czasu, gdy nie dodam jakiegoś zdjęcia (samo wysłanie bez przypisywania go do żadnego Miejsca).
Wtedy to po wyświetleniu szczegółów miejsca (akcja show dla Places) otrzymuję błąd:
wrong number of arguments (0 for 2)
odołujący się dokładnie do linijki cytowanej wcześniej (render :partial)
Z tym, że dzieje się to tylko dla Miejsc, które posiadają przypisane Zdjęcia.
Plik photos/photo_list_link
[code]
<%= image_tag(photo.image.url(:thumb)) %><%= photo.approximate_date %>
Kolejnym miejscem, w którym sytuacja się powtarza jest zwracanie wyników wyszukiwania przez sphinxa.
Posiadam tam linijkę:
<%= render :partial => "places/simply_place", :collection => @places, :as => :place %>
Dzieje się tam dokładnie to samo co opisałem przed chwilą, czyli błąd o złej liczbie argumentów. Tu również po próbie wyświetlenia wyników w bloku, z szablonem dokładnie takim, jaki posiadam w pliku places/simply_place wszystko działa tak jak należy. Jeżeli zamienię linijkę odpowiedzialną za wyszukiwanie na @places = Place.all to wtedy również jest wszystko w porządku.
Sytuacja rozwiązuje się dopiero po zrestartowaniu nginx.
Sprawdzałem już logi nginx i railsów. Nic nadzwyczajnego mówiącego o błędzie nie znalazłem.
Spotkał się może ktoś z takim lub podobnym błędem? Może wiecie jak temu zaradzić?
Jest to błąd dodatków, czy jednak popełniaj gdzieś jakiś błąd?
Jeżeli przedstawiłem za mało kodu, to oczywiście dokleję więcej.
Z góry dziękuję i pozdrawiam
Piotrek