В Rails я могу использовать accepts_nested_attributes_for, чтобы одна форма могла создавать два разных, но связанных объекта. Теперь я работаю над проектом Scala Lift, и я хочу сделать что-то подобное. У меня есть модель пользователя и модель адреса. Я хочу иметь одну форму, которая создает пользователя и их адрес. Как это работает в лифте?Может ли форма лифта принимать атрибуты для нескольких моделей?
ответ
В целом, лифт подходит к обработке форм, связывая функцию обработчика с каждым входом, который вызывается при представлении формы. В каждой из этих функций вы должны определить логику, необходимую для установки соответствующих полей в вашей модели.
Используя что-то вроде приведенного ниже примера, вы можете создавать экземпляры своих классов, а затем выполнять соответствующие действия при подаче. Вы увидите, что это создает класс User
и Address
, а затем устанавливает поле для каждого из них. Функция, связанная с кнопкой отправки, позаботится о сохранении их обоих. Поскольку действия выполняются в функции, вы можете включить столько логики, сколько необходимо для работы вашего приложения (преобразование данных, установка нескольких полей и т. Д.). Например, в логике отправки я связываю идентификатор Address
с User
, чтобы определить, как они связаны.
В вашем Snippet
val user = new User()
val address = new Address()
".nameField" #> SHtml.input(user.name, (txt) => {
user.name = txt
}) &
".addressField" #> SHtml.input(address.address1, (txt) => {
address.address1 = txt
}) &
".submit" #> SHtml.submit("Save",() => {
//persist address
user.addressId = address.id
//persist user
})
В вашем HTML
<form data-lift="form">
<input class="nameField"></input>
<input type="submit" class="submit"></input>
</form>
В общем, то, как бы вы сделать то, что вы хотите сделать. В дополнение к обработке всего самого себя, Lift включает в себя Mapper
, который в значительной степени является базой данных ORM. Я считаю, что может автоматизировать много сопоставлений отношений и упростить создание некоторых форм. Я не использую его сам, поэтому я не могу привести более конкретный пример. Но, если вы решите проверить это, вы можете найти более подробную информацию о Mapper here и here.
Ваш ответ был очень полезен! Спасибо! –
- 1. Unransackable атрибуты для нескольких моделей
- 2. Rails 4 форма для нескольких моделей
- 3. Одна форма для обновления нескольких моделей
- 4. Форма для моделей профиля?
- 5. Rails форма поиска, которая может искать множество атрибутов нескольких моделей
- 6. Текстовая форма не может принимать апострофы
- 7. Принимать вложенные атрибуты не работает как ожидалось
- 8. Выбор типа symfony должен принимать массив моделей
- 9. CakePHP одна форма для нескольких моделей не проверена правильно
- 10. act_as_follower для нескольких моделей
- 11. Одна форма для двух моделей
- 12. Форма Django для модели моделей
- 13. Может ли QAction принимать капли?
- 14. Может ли значение HTML5-метра принимать setAttribute?
- 15. Ассоциация полиморфизмов для нескольких моделей
- 16. Создание общего объекта, который может принимать несколько разных типов моделей
- 17. Атрибуты для нескольких полей
- 18. R: может ли `assign` использоваться для моделей?
- 19. Принимать вложенные атрибуты в ассоциации belongs_to
- 20. Интерфейс Laravel для нескольких моделей
- 21. Динамические атрибуты Meta для моделей Django?
- 22. Использование pg_search для нескольких моделей
- 23. Использование утилит для нескольких моделей
- 24. Принимать вложенные атрибуты не работают
- 25. Переводы атрибутов для нескольких моделей Active Record
- 26. One View для нескольких моделей?
- 27. Wufoo - POSTING Форме API - форма не может принимать новые записи
- 28. cakePHP сохранить для нескольких моделей
- 29. Tastypie апи для нескольких моделей
- 30. Может ли ViewModel иметь несколько моделей?
Должен ли я использовать сопоставленныеLongForeignKeys? –
Вы вообще спрашиваете, как это сделать с помощью Lift, или используете ли вы определенную технологию, например [Mapper] (https://www.assembla.com/wiki/show/liftweb/Mapper), с которой вам нужна помощь? – jcern
Я хочу знать, как это сделать в лифте. Я очень новичок в структуре. –