영구적으로 일대 다 관계를 정의했지만 입력으로 외래 키 중 하나를 사용할 수있는 양식을 만드는 방법을 파악할 수 없습니다. 나는 자동차에 대한 양식을 생성 할 때양식의 영구 관계 캡처
Person
name String
Car
personId PersonId
name Text
type Text
지금, 무엇 personId에 대한 필드 타입이어야이 같은 내 사용 사례를 단순화? 나는 이런 식으로 뭔가를 시도했지만 오류가 : 나는 위를 실행하면
entryForm :: Maybe Car -> Form Car
entryForm car = renderDivs $ Car
<$> areq personIdField "Person" Nothing
<*> areq textField "Car Name" (carName <$> car)
<*> areq textField "Type" (carType <$> car)
내가 오류 얻을 : Not in scope: `personIdField'.
내가 intField
시도를하며 말한다 :
Couldn't match expected type `KeyBackend
persistent-1.2.1:Database.Persist.Sql.Types.SqlBackend Person'
with actual type `Text'
Expected type: Field
m0
(KeyBackend
persistent-1.2.1:Database.Persist.Sql.Types.SqlBackend Person)
Actual type: Field m0 Text
In the first argument of `areq', namely `intField'
In the second argument of `(<$>)', namely
`areq intField "Person" Nothing
가 이상적으로 내가 좋아하는 것 (너무 많지 않은 경우) 또는 너무 많은 경우 자유 양식 텍스트 필드 (예 : 자동 완성)가있는 경우 사용자 이름 드롭 다운을 채 웁니다. 사용자로부터 외부 키를 입력받을 수있는 방법에 대한 제안 사항은 무엇입니까?
업데이트 :
내가 아니라 내가 정확히이 일을하고 있다면 반드시 다음과 같이 selectField를 사용했습니다. 나는 여전히 오류가 발생합니다.
where
personId = do
person <- runDB $ selectFirst [] [Asc PersonName]
case person of
Just (Entity pId p) -> return pId
-- Nothing -> ???
을 한 후 나는
<$> areq (selectField [("First", personId)]) "Person Name" Nothing
덕분에 처음 AREQ을 변경 : 우선은 personId를 얻을 수있는 곳 문을 만들어!
당신은'selectField'를 사용해야합니다. – Ankur
@Ankur 당신이 그것을 의미하는 것을 자세히 설명해 주시겠습니까? selectField를 사용했지만 비슷한 오류가 발생했습니다. 그렇다면 제대로 사용하는지 잘 모르겠습니다. 또한, 사용자로부터 자유 형식 입력을 받고 나중에 ID로 다시 매핑하려는 경우이 구조가 어떻게 작동합니까? – Ecognium