Mam drobny problem w Rails 3.1 i po małym grzebaniu i kombinowaniu doszedłem do wniosku że zapytam tutaj.
Kiedy wygeneruję jakiś szkielet, nie ma problemu z przeglądaniem (index), pokazaniem (show), utworzeniem (new, create), edycją (edit, update), natomiast nie działa mi niszczenie obiektu. Próbowałem nadpisać metodę destroy i ją wywołać - bezskutecznie. Kody nie mam co wrzucać, zwykły wygenerowany szablon.
Started GET “/products/3” for 127.0.0.1 at 2011-06-08 09:49:44 +0200
Processing by ProductsController#show as HTML
Parameters: {“id”=>“3”}
Product Load (0.2ms) SELECT “products”.* FROM “products” WHERE “products”.“id” = ? LIMIT 1 [[“id”, “3”]]
Rendered products/show.html.erb within layouts/application (6.3ms)
Completed 200 OK in 14ms (Views: 10.8ms | ActiveRecord: 0.7ms)
Started GET “/assets/application.css” for 127.0.0.1 at 2011-06-08 09:49:44 +0200
Served asset /application.css - 304 Not Modified (0ms) (pid 14416)
Started GET “/assets/defaults.js” for 127.0.0.1 at 2011-06-08 09:49:44 +0200
Served asset /defaults.js - 404 Not Found (6ms) (pid 14416)
ActionController::RoutingError (No route matches [GET] “/assets/defaults.js”):
Rendered /home/michal/.rvm/gems/ruby-head/gems/actionpack-3.1.0.rc1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)
czyli z tego co widzę nawet nie próbuje usunąć, tylko od razu przechodzi do show.
A pokaż widok, w którym masz to destroy. Problem jest taki, że destroy powinien iść metodą DELETE a nie GET. Ponieważ zapytanie jest generowane GETem to idzie do akcji show.
Jeśli usuń na Twoim widoku jest linkiem, a nie przyciskiem, to pewnie nie działa jakiś javascript.
[quote=tjeden]A pokaż widok, w którym masz to destroy. Problem jest taki, że destroy powinien iść metodą DELETE a nie GET. Ponieważ zapytanie jest generowane GETem to idzie do akcji show.
Jeśli usuń na Twoim widoku jest linkiem, a nie przyciskiem, to pewnie nie działa jakiś javascript.[/quote]
Proszę :
Ok, postaram się poszperać na temat javascriptu związanego z tą metodą, natomiast proszę się zbytnio nie przejmować - to tylko próbna aplikacja, na której chciałem się nauczyć gemu i sprawdzić czy działa, dopiero jak będzie wszystko okey wprowadzę go w życie : )
Po za tym wydaje mi się, że powinno mimo wszystko wyskoczyć okienko z pytaniem (“Are you sure?”), bo to chyba jest związane z obsługą bierzącej strony, a nie wyskakuje.
W takim razie wydaje mi się, że problem leży w samej metodzie, nie wiem czemu, tak intuicja mi podpowiada ; p
Klinkij link -> wywołaj metodę usuwającą -> potwierdź -> przenieś do index, tak było bez IR. Z nim teoretycznie powinno być tak samo. Natomiast w tym momencie zamiast wywołać metodę usuwajacą z potwierdzeniem i następnie przeniesieniem do index mam link -> show . Dla porównania new->create->show działa jak należy. Czyli problem może być w delete, nie rusza zasobu i przenosi do jego akcji show.