Dlaczego odświeżenie automatycznie ładuje komendę?

mam pytanie, dlaczego (pomijając że akcję można zdefiniować w kontrolerze) w którekolwiek miejsce widoku wstawię taki kod:

link_to(‘cokolwiek’, :action =>@post.comment.delete_all)

lub button_to zamiast link_to, wszystkie komenty są wywalane przy każdym przeładowaniu strony a nie dopiero w momencie kliknięcia na link/button?

@post.comment.delete_all to metoda usuwająca wszystkie komentarze.

Pewnie chodzi Ci o coś takiego:

link_to('cokolwiek', :controller => :comments, :action => :destroy_all)

to przekieruje do akcji destroy_all, którą musisz sobie dodać w routes.rb i zdefiniować w kontrolerze, na podobieństwo akcji destroy.

dodać do routes.rb? możesz mi wyłożyć jak totalnemu idiocie (po kilku godzinach je*** się z tym mam wrażenie że nim właśnie jestem) jak to zrobić? kontroler już ogarnę, tylko co z tym routes? Poza tym to co napisałem działa, i faktycznie wywala wszystkie komenty, tylko że zamiast po kliknięciu na link, robi to przy każdym możliwym przeładowaniu strony (np. dodanie komenta/odświeżenie strony)

Widzę, że kolega nie rozróżnia podstawowych rzeczy jak wywołanie metody usuwającej, a wywołanie metody tworzącej url.

Polecam zapoznanie się z programowanie w ogóle i oczywiście z API Railsów.

Jednak pomijając ten fakt, to Ruby jest jest jednak dość ekspresyjny i chyba nawet nie znając się na programowaniu, każdy domyśli się co może robić polecenie @post.comments.delete_all, nieprawdaż ?

Jeśli chodzi o routes: http://railscasts.com/episodes/203-routing-in-rails-3 + oczywiście Rails Guides

Prosty przykład:

match 'delete_all_comments' => 'comments#destroy_all', :via => :delete, :as => :delete_all_comments

Dziękuję za odpowiedź i zainteresowanie, i skoro już pośmialiśmy się z mojej głupoty to chciałbym nadmienić że nie zaskoczyło mnie działanie tego polecenia, a fakt że jest wykonywane automatycznie przy każdym odświeżeniu strony mimo iż w owy link nikt nie klika.
W przypadku użycia button_to sytuacja jest ta sama, i posty również zostają usunięte i nie dziwi mnie to że zostają usunięte tylko to że usuwają się mimo NIE KLIKANIA PRZYCISKU, a jedynie odświeżenia strony, lub dodania kolejnego komenta, co powoduje przeładowanie strony.

Programowanie webowe, to nie to samo co zwykłe programowanie desktopowe. Nie znam platformy programowania aplikacji webowych, w których byłby możliwy scenariusz o którym piszesz. Czy to będzie JSP, czy PHP, czy Ruby on Rails - wszędzie powyższy kod spowoduje usunięcie wszystkich komentarzy w momencie renderowania widoku.

Może się to wydawać dziwne, jeśli wcześniej programowałeś aplikacje desktopowe, bo tam kod “handlera” był wywoływany po naciśnięciu na guzik. Niestety w prog. webowym obsługa wszelkiej interakcji musi być rozbita na dwa elementy - przygotowanie akcji, jako elementu strony html (najczęściej jako link), a potem obsłużenie żądania, które powstaje po kliknięciu tego linku (czyli akcji kontrolera).
Niestety nie da się (choć może byłoby to fajne) zrobić tak, żeby treść akcja mogła być definiowana w widoku. W widoku możesz jedynie podać jaka akcja ma się wykonać, ale nie możesz jej zdefiniować!

apohllo, dziękuję za rzetelną odpowiedź. Teraz już rozumiem co jest grane i gdzie popełniłem błąd i cieszę się że ktoś dosadnie mi to wytłumaczył, bez podśmiechiwania :wink: Pozdrawiam!

nie podśmiewałem się tylko zaapelowałem o zapoznanie się z podstawami, a to jest różnica! :wink: bez urazy… nie miałem niczego złego na myśli…