хочу изменить мой метод обновления в Rails, но REST ограничивает меня - PullRequest
0 голосов
/ 04 июля 2010

Проблема: у меня есть коллекция людей, я хочу иметь страницу revise.html, которая позволяет мне увеличивать целое число для всех людей.

, если я создаю новый метод в people_controllerauto отправляет меня людям / revise .. который интерпретируется как show / revise ... который не является идентификатором.

Я понимаю, что это происходит из-за ограничений REST.Но я действительно не понимаю, как я должен делать это обновление для всех записей.

Должен ли я сделать новый контроллер для ревизии?или я могу изменить метод обновления внутри people_controller.

вот некоторый код для моего revise.html.erb:

<h1>Update the All Bio's Revision'</h1>

<% form_for(@people) do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :version %><br />
    <%= f.text_field :version %>
  </p>
  <p>
    <%= f.submit "Update Revision" %>
  </p>
<% end %>

<%= link_to 'Back', people_path %>

Я хочу, чтобы он затем представил свой параметр из текставведите и обновите всех людей

@people = Person.find(:all)

@people.each do |person|

person.version = params(:version)

end

Да, я просто не знаю, получаю ли я этот новый синтаксис rails 2. и тому подобное.

Спасибо за любую помощь всем!

Ответы [ 2 ]

2 голосов
/ 04 июля 2010

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

map.resources :people, :collection => { :revise  => :post }

документы для добавления коллекции к вашему маршруту

1 голос
/ 04 июля 2010

Таким образом, вы извлекаете все сообщения, затем устанавливаете атрибут версии для них один за другим (и забываете сохранять их). Вам было бы лучше использовать Person.update_all. Пусть база данных сделает всю работу за вас.

Что касается действия контроллера, то нет никакого вреда в добавлении дополнительного действия в стандартную семерку RESTful, если вы не сходите с ума от этого. Это просто означает, что «revise» становится зарезервированным ключевым словом; ни один человек не может иметь это в качестве своего удостоверения личности. Вы также можете просто прикрепить форму внизу вашего действия "index".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...