Как обновить определенные части формы - PullRequest
0 голосов
/ 15 декабря 2011

Я хочу создать отчет с похожими данными, у которого рядом с каждой строкой будет установлен флажок.В каждой строке есть несколько полей, которые можно редактировать (например, комментарии).Я хотел бы дать пользователю возможность пометить, какие строки он / она хотел бы обновить, установив флажок рядом с этой строкой.Тогда у меня будет кнопка сохранения внизу формы, которая обновляет только те строки, у которых активен флажок.

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

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Популярный способ добиться этого:

1- Все ваши флажки должны иметь одинаковые имена.

2- Все значения ваших флажков должны быть идентификатором строки /объект

3- Когда вы отправляете форму POST, в данных POST присутствуют только отмеченные флажки.Получите эти IDS и обновите только эти объекты.

Например, ваш флажок должен выглядеть примерно так:

<%= check_box_tag "row_ids[]", row.id, false, :id => "row_#{row.id}" %>

Затем в вашем контроллере:

Row.find(params[:row_ids]).each do |row|
  # do whatever you want
end
1 голос
/ 15 декабря 2011

Ну, вы можете сделать это, но это добавляет больше работы для пользователя: они должны снять несколько флажков, прежде чем нажимать Update. Было бы лучше, если бы они просто нажали Update, и это сработало.

Основная идея заключается в том, что вы хотите, чтобы пользователь просто нажимал Обновить, а ваш код обновлял только те записи, которые изменились.

Что вы можете сделать - это сохранить (в скрытом теге поля) идентификатор записи каждой строки. Затем при обновлении вы перебираете все строки и извлекаете (на основе идентификатора, хранящегося в скрытом поле) запись из базы данных. Допустим, только комментарии были доступны для редактирования. Затем вы можете проверить, действительно ли комментарии были изменены (как при простом сравнении строк), и если они есть, обновите их. Если больше объектов доступно для редактирования, вы также можете проверить их, прежде чем решить, нужно ли вам обновить или нет.

Это описание высокого уровня, но дайте мне знать, если вам нужны дополнительные детали реализации.

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