Uaktualniam starą aplikację szyn do wersji 3.1. Aplikacja działa dość, ale mam trochę funkcji ajaxowej, którą muszę zaktualizować. (Jeśli robi to jakąkolwiek różnicę, używam jquery i coffeescript)Aktualizacja szyn do wersji 3.1 - zmiana obsługi ajax z "render: update" na answer_to
Cała istniejąca funkcja ajax została napisana przy pomocy render: updates. np.
render :update do |page|
page.remove "financial_tran_offset_#{params[:ftof_id]}"
page.replace_html 'details', :partial => 'details', :locals => {:obj => @fire}
end
Myślę, że nowym preferowanym sposobem jest użycie respond_to? blok do obsługi js, ale nie jestem pewien najlepszego sposobu obsługi tych różnych przypadków.
Dla pierwszego przypadku() myślę, że z linii potoku aktywów, powinienem mieć zewnętrzny js w/app/assets/javascripts/do obsługi strony javascript (np. Page.remove), ale jestem nie wiem, jak przekazać parametry do pliku js. Zgaduję, można zrobić coś takiego:
respond_to do |format|
format.js {:render :js => {:ftof => params[:ftof_id]}
end
ale nie jestem pewien, jak można to odebrać od wewnątrz pliku js. Czy jest to właściwy sposób przekazywania informacji do js? Czy jest jeszcze inna metoda, której powinienem używać?
Dla drugiego przypadku (page.replace_html
) myślę, że to zostało zdeprecjonowane/usunięte z wersji 3.1 (zgodnie z apidock). Podejrzewam, że powinien to być plik js w katalogu app/assets/javascript, ale nie wiem, w jaki sposób powinienem wykonać renderowanie częściowe i przekazywanie tych informacji do js.
Dzięki za wszelkie wskazówki w tym zakresie =)
fajne. czy mimo to można to zrobić za pomocą coffeescript, czy ogranicza się tylko do prostej js w update.js.erb? –
Jeśli naprawdę chcesz używać CoffeeScript, być może będziesz w stanie, ale wsparcie w widokach dynamicznych jest niekonsekwentne z tego, co mogę powiedzieć. (Ja osobiście wolę prosty JS.) CoffeeScript dla prostych jQuery One-Liners to trochę przesada. '$ ('# id'). dopisz ('content');' to '$ ('# id'). dopisz 'content''. Nie jest warte narzutu, aby zapisać zestaw nawiasów. JQuery jest kompaktowy i wystarczająco prosty. Równie dobrze może być z tym. – Substantial
Dzięki za bardzo szczegółową odpowiedź! –