Problem z submit_tag i onclick

Mam coś takiego w widoku:
<%= submit_tag ‘Usuń’, :onclick => message.update_attribute(‘bin’, true), :confirm => “Czy napewno chcesz usunąć tą wiadomość?” %>

Problem jest w tym, że jak mi się widok załaduje to już mi zmienia wartosc pola bin na true, a nie tak jak myślałem, że zmieni to dopiero po naciśnięciu przycisku.
Dlaczego tak jest? i jak to zrobić żeby dobrze działało?

W widoku wszystko jest evaluowane (wykonywane) by wygenerować HTML’a. Więc wykonywane jest

message.update_attribute('bin', true)

i wynik działania jest wstawiany do atrybutu oncluck taga .

Jak powinieneś zrobić? Zacząć od początku: dowiedzieć się o MVC, poczytać o routes, o REST, poczytać Rails guides http://www.apohllo.pl/guides/index.html a później pooglądać np. Railscasts: http://railscasts.com/

To Ci powinno powiedzieć, że powinieneś napisać RESTową metodę w kontrolerze (destroy).

PS. fajne do obsługi stanów obiektu jest AASM (acts_as_state_machine).

Powodzenia w rozgryzaniu Rails!

A jakby taki mały plugin, który pozwala na napisanie:

submit_tag 'Usuń', :onclick => lambda {message.update_attribute('bin', true)}, :confirm => "Czy napewno chcesz usunąć tą wiadomość?"

To by dopiero było pole dla spaghetti code :slight_smile: