remote_form_for

Witam.

Mam standardowa stronę z lista działów i nad listą, jest formularz do dodawania nowego działu.
Po kliknięciu dodaj, dodaje go do listy za pomocą:

page.insert_html :after, :departments, :partial => 'department', :object => @department

i wszystko ładnie się dodaje tyle ze na końcu (after), a chciałbym aby wskaiwało to w swoje miejsce, bo działy mam posortowane alfabetycznie.
Czy najlepszym sposobem aby wstawiać dodany dział w odpowiednie miejsce będzie:

  1. Otwieram stronę z działami i listę działów wypisuje Ajaksem.
  2. Po dodaniu działu pobieram z bazy jeszcze raz listę działów Ajaksem i podmieniam istniejąca listę, i teraz już będę miał dodany dział w odpowiednim miejscu.

Czy takie podejście jest dobre? Zadziałać, to to zadziała ale czy jest to po Railsowemu?

Czy w ogóle wczytywanie listy działów po otwarciu strony z działami za pomocą Ajaksa to dobry pomysł? Obecnie wypełniam listę za pomocą umieszczona w widoku

<% for department in @departments %> <%= render :partial => 'department', :locals => { :department => department } %> <% end %>
Myślałem aby dodać wypełnianie tej listy Ajaksem w onload dla body?
Dobry pomysł?

Jak zrobić to najlepiej?

Pozdrawiam

[quote=l0pez]Czy najlepszym sposobem aby wstawiać dodany dział w odpowiednie miejsce będzie:

  1. Otwieram stronę z działami i listę działów wypisuje Ajaksem.
  2. Po dodaniu działu pobieram z bazy jeszcze raz listę działów Ajaksem i podmieniam istniejąca listę, i teraz już będę miał dodany dział w odpowiednim miejscu.

Czy takie podejście jest dobre? Zadziałać, to to zadziała ale czy jest to po Railsowemu?[/quote]
To jest jedyny sensowny pomysł, żeby mieć elegancką listę. Lekkie i nieodczuwalne dla użytkownika. Czy jest “po railsowemu”? a co to znaczy? :slight_smile:

[quote=l0pez]Czy w ogóle wczytywanie listy działów po otwarciu strony z działami za pomocą Ajaksa to dobry pomysł?

<% for department in @departments %> <%= render :partial => 'department', :locals => { :department => department } %> <% end %>
[/quote]
Bardzo dobrze to realizujesz nie dublujesz kodu, zawsze w ten sam sposób generujesz listę. Render partial jest właśnie stworzony do takich zastosowań.

PS.

Witam po latach :wink:

Zgoda, ale można jeszcze prościej:

<%= render :partial => 'department', :collection => @departments %>

Działa tak samo, ponieważ w partialu department zmienna lokalna o tej samej nazwie (czyli department) wiązana jest kolejno z wszystkimi obiektami należącymi do kolekcji.