Rails Restful actions Index Put

Я часто сталкиваюсь с ситуацией, когда я хочу обновить много записей одновременно, как это делает GMail с установкой для многих сообщений «прочитанных» или «непрочитанных».

Rails поощряет это с помощью метода update в классе ActiveRecord - Comment.update (keys, values)

Пример -http: //snippets.dzone.com/posts/show/749

Это отличная функциональность, но ее сложно сопоставить с спокойным маршрутом. В некотором смысле, я хотел бы увидеть: действие на коллекцию. В маршрутах мы можем добавить что-то вроде

map.resources :comments, :collection => { :update_many => :put }

А потом в форме, ты сделаешь это ...

<% form_for @comments do |f| %>
  ...

Это не работает на многих уровнях. Если вы сделаете это:: collection => {: update_many =>: put}, rails отправит сообщение в действие index (CommentsController # index), я хочу, чтобы оно перешло в действие update_many. Вместо этого вы можете сделать: collection => {: update_many =>: post}. Это, по крайней мере, приведет к правильному действию в контроллере.

И вместо <% формы для @comments ... вы должны сделать следующее:

<% form_for :comments, :url => { :controller => :comments, :action => :update_many } do |f| %>

Так будет хорошо.

До сих пор не идеально - кажется, что мы не делаем это «по пути Rails». Это также выглядит как: post, и: delete также имеет смысл на контроллере коллекции.

Я пишу здесь, чтобы узнать, что я пропустил при настройке. Любые другие мысли о том, как спокойно делать уровень коллекции: post,: put,: delete?

Ответы на вопрос(2)

Ваш ответ на вопрос