В моем приложении на Rails 3 у меня есть несколько страниц с формами, где пользователь может создавать записи, а затем редактировать их.Чтобы создать запись, пользователь нажимает кнопку «Добавить запись», которая открывает модальное диалоговое окно с формой «Новая запись».Как только пользователь заполняет форму и нажимает Сохранить, модальное диалоговое окно исчезает, и таблица частично обновляется, показывая новую запись.Чтобы редактировать запись, пользователь нажимает на ссылку редактирования рядом с любой существующей записью, которая вызывает модальное диалоговое окно с формой, аналогичной форме «новая запись», но имеет заголовки «Редактирование записи» и «Сохранить изменения».и т. д.
Сейчас я делаю это с двумя частями: частичной таблицей и частичной формой.Часть формы показывает заголовки «Редактировать», основываясь на том, является ли переменная @editing истинной.
В настоящее время она работает так, что когда пользователь нажимает кнопку «Новая запись», он имеет функцию onClick, которая выполняет две функции.
1) ajax-вызов jquery для «нового» действия, которое создает необходимые объекты и отображает частичную часть следующим образом:
@editing = false
respond_to do |format|
format.js
{
render :update do |page|
page["#entry_div"].html(render :partial=> 'form');
end
}
end
2) вызов jquery, который показывает div в видемодальное диалоговое окно (simplemodal).
Нажатие кнопки редактирования объекта делает то же самое, за исключением того, что действие "edit" устанавливает @editing в значение true, а вызов Ajax отправляет идентификатор редактируемого объекта.
Кроме того, когда пользователь нажимает сохранить и объект сохраняется, оба действия «создать» и «обновить» выполняют следующее:
respond_to do |format|
if @record.save
@all_records = Record.where(:project_id => @project.id).all
format.js {
@save_message_div = 'save_message_div'
@table_container = 'table_div'
@table_partial = 'table'
@form_partial = 'form'
@form_container = "entry_div"
render 'saved'
}
end
end
«сохранен» - это файл .rjs, который обновляетчастичная таблица, сбрасывает форму и показывает сообщение «успешно сохранено».
Мой вопрос, в основном, я делаю это правильно?Какой самый современный, эффективный и ненавязчивый способ сделать эти звонки?Должен ли я по-прежнему использовать вызовы типа page ["# divname"]. Html (частичное отображение) в своих действиях?Должен ли я по-прежнему использовать файл rjs для перезагрузки партиалов и отображения сообщений сохранения?Если нет, как я могу справиться с этими ситуациями (загрузка паролей и т. Д.)?
Большое спасибо и дайте мне знать, если вам нужна дополнительная информация.