Rails Spokojne działania Indeks Umieść
Często spotykam się z sytuacją, w której chcę aktualizować wiele rekordów jednocześnie - podobnie jak GMail z ustawieniem wielu wiadomości jako „przeczytanych” lub „nieprzeczytanych”.
Rails zachęca do tego za pomocą metody „update” w klasie ActiveRecord - Comment.update (klucze, wartości)
Przykład -http: //snippets.dzone.com/posts/show/749
To świetna funkcjonalność, ale trudna do zmapowania na spokojną trasę. W pewnym sensie chciałbym zobaczyć: umieść akcję w kolekcji. W trasach możemy dodać coś takiego jak
map.resources :comments, :collection => { :update_many => :put }
A potem w formularzu zrobiłbyś to ...
<% form_for @comments do |f| %>
...
To nie działa na wielu poziomach. Jeśli to zrobisz:: collection => {: update_many =>: put}, szyny prześlą post do akcji indeksu (CommentsController # index), chcę, aby przeszła do akcji „update_many”. Zamiast tego możesz zrobić: collection => {: update_many =>: post}. Spowoduje to przynajmniej przejście do właściwej akcji w kontrolerze.
I zamiast formularza <% dla @comments ... musisz wykonać następujące czynności:
<% form_for :comments, :url => { :controller => :comments, :action => :update_many } do |f| %>
W ten sposób będzie działać OK
Nadal nie jest idealny - wydaje się trochę, jakbyśmy nie robili tego w „Railsowy sposób”. Wydaje się również, że: post i: delete miałyby również sens na kontrolerze kolekcji.
Publikuję tutaj, aby sprawdzić, czy coś mi brakowało w konfiguracji. Wszelkie inne przemyślenia na temat tego, jak spokojnie wykonać poziom zbierania: post,: put,: delete?