W kontrolerze X mam akcję Y. W Widoku akcji mam link. Chciałbym, aby po kliknięciu na anchor linku wykonywała się pewna metoda (operacja na bazie danych), a strona, na której jesteśmy pozostawała ta sama. W związku z tym:
Czy tego typu zapis jest odpowiedni do takiej operacji: <%= link_to ‘anchor’ :controller => ‘X’, :action => 'Y, :method => nazwa_metody %> ?
Czy ewentualna metoda powinna się znajdować w klasie kontrolera ?
Parametr :method przekazywany do link_to decyduje tylko o użytej przez przeglądarce metodzie protokołu HTTP (get/post/put/delete itd.), nie ma nic wspólnego z metodami railsowymi.
W sytuacji o której mówisz, należałoby zrobić akcję akcję kontrolera wywołującą pożądaną metodę, odpowiadającą na żądania AJAX-owe - i przekazać w linku do tej akcji opcję “:remote => true”.
A w ogóle, to przede wszystkim poczytaj trochę podstawy…
Źle się wyraziłem pisząc [quote=trojek]strona, na której jesteśmy pozostawała ta sama[/quote]
. Strona może zostać przeładowana, w związku z tym nie ma potrzeby używania AJAX-a. Z tego co rozumiem, to powinienem po prostu zrobić link do nowej akcji, tam obsłużyć zdarzenie, a następnie przekierować się lub jakoś pozosotać (na stronę, z której akcję uruchamiałem). Czy mój tok rozumowania jest poprawny ?
Tak. Pomyśl jeszcze, jaką metodą protokołu HTTP wywołasz tę nową akcję, w zależności od istoty operacji na bazie danych, którą masz zamiar w niej wykonać (REST się kłania).