Inherited resources delete

Cześć!

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.

Z góry dzięki za jakiekolwiek uwagi ; )

Pozdrawiam ! :slight_smile:

No ale masz logi, je by się przydało wrzucić. Co ci konsola wypluwa w development jak coś próbujesz kasować

Klikam “Destroy” i mam :

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ę :

<% @products.each do |product| %>

<%= product.title %> <%= product.description %> <%= link_to 'Show', product %> <%= link_to 'Edit', edit_product_path(product) %> <%= link_to 'Destroy', product, confirm: 'Are you sure?', method: :delete %> <% end %>

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 : )

Dzięki gotar i tjeden za poświęcenie uwagi :slight_smile:

link_to ‘Destroy’, product, :confirm => ‘Are you sure?’, :method => ‘delete’

spróbuj w starym stylu ;]

niestety nie działa ; p

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.

Dobrze kombinuję?

nie wyskoczy jak nie masz js załadowanego. Załaduj js i powinno wyskoczyć

w sensie <%= javascript_include_tag :defaults %> ?
To już jest. I bez IR działa, a z nim nie, nie tylko tutaj.

Możesz mnie nakierować jak to zrobić ?

W Railsach 3.1 troche inaczej to wyglada.

Sprobuj:

<%= javascript_include_tag :application %>

I zobacz czy masz…

w config/application.rb:

config.assets.enabled = true
# config.action_view.javascript_expansions[:defaults] = %w(rails)

w Gemfile:

gem 'jquery-rails'

w app/assets/javascripts/application.js

//= require jquery
//= require jquery_ujs

I do poczytania :wink:
http://asciicasts.com/episodes/265-rails-3-1-overview
http://getsprockets.org/

EDIT: dobra, nie zauwazylem, ze problem jest z IR - nvm :stuck_out_tongue:

Udało mi się rozwiązać problem, leżał on w generatorze layotów nifty-generators ; )

Można zamknąć

[quote=Vayneyks]Udało mi się rozwiązać problem, leżał on w generatorze layotów nifty-generators ; )

Można zamknąć[/quote]
Moze jednak napiszesz co takiego poprawiles i jaki problem byl z nifty generators. Poprawiony kod mile widziany

Aj, przepraszam. Generator n-g psuł coś, przez co nie działało, bez niego było okey.