w ostatniej akcji nie wyświetla skróconej ścieżki (czyli …_path) tam gdzie jest metoda DELETE
to jest cały kod, no moża poza tym, że w kontrolerze mam wpisane
@blocks = Block.all()
a w widoku
@blocks.each do |block|
= link_to(image_tag("icons/remove.png", :title => "Usuń", :alt => "Usuń"), admin_block_path(block), :method => :delete)
end
Tą zmianę w kodzie co zaproponowałemś (z tym nawiasem, to działa ona tak samo jak admin_block_path(block), czyli nie znajduje routingu po kliknięciu)
Jeśli chodzi o przeniesieniu tego do css to masz zupełną rację, ale tym się zajmę zachwilę, narazie chcę zmusić do działania ten link.
Mówiąc szczerze nie mam pomysłu dlaczego tak się dzieje. Jedyne co mi przychodzi do głowy (zabrzmi to idiotycznie, wiem :D) - mam podobny problem z linkiem do wylogowanie w Devise. Czasem jak coś wariuje z tym linkiem wywalam method: :delete, kilka razy klikam w ten link (oczywiście wyrzuce No route matches [GET] (...)), potem dodaję znowu method: :delete i z jakiegoś nieznanego mi powodu znowu działa.
Jest to jakaś ciężka magia, której jeszcze nie udało mi się pojąć
Javascripty są na swoim miejscu? Bo generalnie :method => :delete w linku działa przy pomocy javascriptu, tzn. zamieniane jest to afair na formularz z hidden fieldem.
Dzisiaj wieczorem sprawdzę wskazówkę od @gajowy, co trochę mnie zmartwiło bo staram się teraz zrobić stronę unobtrusive javascript. Więc chyba będę musiał zastosować jakieś alternatywne rozwiązanie.
Ale jaki jest problem? Przecież w Rails3 method, confirm i inne helpery, które wcześniej ładowały javascript prosto do html-a teraz są napisane unobtrusive
nie wiem w jaki sposób railsy mogą zamieniać ten link_to z method delete na formularz bo u mnie to nie działa, ale znalazłem inna alternatywe
<style>
.delete_button {
background: ...
border: 0px;
}
</style>
<%= button_to "", admin_block_path(1), {:confirm => "Are you sure?", :method => :delete, :class => "delete_button" } %>
Jest to prawie tak samo krótkie jak link_to.
Możliwe, też tak zmieniałem ostatnio na button_to.
Ale spróbuj zrobić tak:
link_to, ale zamiast :method => :delete, to daj :method => ‘delete’ : )
[quote]I button_to działa? Niemożliwe, żeby button działał a link nie. roll
Spróbuj może jeszcze link_to ale z confirm - do button_to dałeś confirm, do link_to nie.[/quote]
Cośtam jest z tymi metodami, więc nieraz kiedy metoda jest delete/put to link_to baranieje, ale button_to działa. Nie chcę się w to zgłębiać, ale w rails 3.1.0.rc5 już nie spotkałem się z tym problemem : )
Załatwiłem to poprzez button_to, a javascript do generowania linku lub formularza nie ma nic do rzeczy, tutaj jest jakiś problem z railsami. Ponieważ sprawę już załatwiłem (jak pisałem pare postów wyżej) to nie musicie już drążyć tematu.