2013-12-18 73 views
0

在Rails中,我可以使用accept_nested_attributes_for來允許單個窗體創建兩個不同但相關的對象。現在,我正在開發一個Scala Lift項目,我想做類似的事情。我有一個用戶模型和一個地址模型。我想要一個創建用戶及其地址的表單。這在Lift中如何工作?電梯窗體是否可以接受多個模型的屬性?

+0

我應該使用mappedLongForeignKeys嗎? –

+0

您是否一般問如何使用Lift來做到這一點,或者您是否使用了像[Mapper](https://www.assembla.com/wiki/show/liftweb/Mapper)這樣的特定技術,您需要幫助? – jcern

+0

我想知道如何在電梯中做這種事。我對這個框架很陌生。 –

回答

1

一般來說,Lift方法通過將處理函數綁定到表單提交時調用的每個輸入來形成處理。在這些功能的每一箇中,您都可以定義您需要在模型中設置適當字段的邏輯。

使用類似下面的例子,你可以實例化你的類,然後在提交時執行適當的操作。你會看到這會創建一個User和一個Address類,然後在每個類上設置一個字段。綁定到提交按鈕的功能將負責保存兩者。由於動作發生在一個函數中,因此可以包含儘可能多的邏輯以使應用程序可以工作(數據轉換,設置多個字段等)。例如,在提交邏輯中,我將Address的id與User關聯,以定義它們之間的關係。

程式碼中

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 herehere上找到更多信息。

+0

您的回答非常有幫助!謝謝! –

相關問題