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?

questionAnswers(2)

yourAnswerToTheQuestion