mam kontroler Questions w którym jest dodawanie nowego pytania i przekierowanie do konkrolera Pages gdzie są strony z pytaniami. Czy da sie jakoś w sprytny sposób wyświetlić formularz edycji tego pytania ajaxem na docelowej stronie zaraz po przekierowaniu ? Tak jakby kliknięty był link edytuj, który wygląda tak
Bardzo zły pomysł: AJAX request natychmiast po załadowaniu strony. Prościej i skuteczniej: wyrenderuj formularz edycji od razu, przy renderowaniu listy pytań.
To by było najlepsze, tylko jak elegancko przekazać id pytania do którego ma być wyrenderowany formularz edycji. Bo jak wspomniałem pytanie jest zapisywane w kontrolerze Questions i stamtąd jest przekierowanie do listy pytań na stronie z kontrolera Pages. Można w sesji to przekazać, albo w urlu jako dodatkowy parametr ?question_edit=123, które lepsze ?
Issues to zabawka do niewielkich projektów i owszem, jest średnia. Natomiast szybkość ładowania stron na githubie od kiedy dane do wyjęcia z repo / commitu są dociągane AJAXem jest wręcz wzorowa
Rule of thumb 1: jeśli można * coś przekazać w URLu / pozostać w GET – należy to zrobić.
Rule of thumb 2: jeśli można * uniknąć trzymania czegoś w sesji – należy unikać.
Dzięki, zrobiłem URLem. Jest jeden problem, w sumie natury kosmetycznej
Forumularz edycji pytania wywołuję z listy linkiem ajaxowym
<%= link_to_remote image_tag("/images/ico_edit.gif"), :url => edit_question_path(question.group_id, question),
:method => :get, :update => "question_edit_#{question.id}" %>
Forumularz edycji którypokazuje się przy dodaniu nowego pytania, po przekierowaniu, jest jako render na liście, tak jak wyszło z powyższych rad. Czyli kiedy jedziemy po pytaniach sprawdzam czy w URLu było przekazane question
Niestety dla ajaxa pytanie jest przekazywane jako zmienna @question, natomiast dla render jako zmienna lokalna question, więc w widoku musiałem dać przed forumularzem coś takiego
<% question ||= @question %>
Da się coś z tym zrobić żeby zarówno dla edycji wywołanej ajaxem jak i renderem używać jednego typu zmiennej ?