2013-12-18 5 views
0

레일즈에서는 accepts_nested_attributes_for를 사용하여 하나의 폼이 두 개의 서로 다르지만 관련된 객체를 생성 할 수 있습니다. 이제 스칼라 리프트 프로젝트를 진행 중이며 비슷한 것을하고 싶습니다. 나는 User 모델과 Address 모델을 가지고있다. 나는 사용자와 그 주소를 생성하는 하나의 양식을 원한다. 리프트에서 어떻게 작동합니까?리프트 양식은 여러 모델에 대한 속성을 허용 할 수 있습니까?

+0

mappedLongForeignKeys를 사용해야합니까? –

+0

일반적으로 Lift를 사용하여이를 수행하는 방법을 묻거나, [Mapper] (https://www.assembla.com/wiki/show/liftweb/Mapper)와 같은 특정 기술을 사용하여 도움이 필요합니까? – jcern

+0

나는 이런 종류의 일을하는 법을 일반적으로 알고 싶다. 나는이 프레임 워크에 대해 아주 새롭다. –

답변

1

일반적으로 Lift는 양식 제출시 호출되는 각 입력에 처리기 함수를 바인딩하여 양식 처리에 접근합니다. 각 함수에서 모델의 적절한 필드를 설정하는 데 필요한 논리를 정의합니다.

아래 예와 같이 클래스를 인스턴스화 한 다음 제출시 적절한 조치를 수행 할 수 있습니다. 이 경우 UserAddress 클래스가 만들어지고 각 필드에 필드가 설정됩니다. 제출 버튼에 바인딩 된 함수는 둘 모두를 유지 관리합니다. 함수는 함수에서 발생하므로 응용 프로그램을 작동시키는 데 필요한만큼의 논리 (데이터 변환, 여러 필드 설정 등)를 포함 할 수 있습니다. 예를 들어 제출 로직에서 Address의 ID를 User으로 연결하여 관련성을 정의합니다. 당신의 HTML 일반적으로

<form data-lift="form"> 
    <input class="nameField"></input> 
    <input type="submit" class="submit"></input> 
</form> 

에서 당신의 발췌문

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 
}) 

에서

, 그건 당신이 당신이 찾고있는 무엇을 달성 할 방법이다. 모든 것을 직접 처리하는 것 외에도 Lift는 데이터베이스 ORM 인 Mapper을 포함합니다. 관계 매핑을 자동화하고 일부 양식을 쉽게 만들 수 있다고 생각합니다. 나는 그것을 직접 사용하지 않으므로 더 구체적인 예를 드릴 수는 없다. 하지만 확인해 보려면 Mapper herehere에 대한 자세한 정보를 참조하십시오.

+0

귀하의 답변은 매우 도움이되었습니다! 고맙습니다! –