haskell - use runDB in a SubSite Yesod -
i want create post method in subsite create new entity, have aform
demoform :: rendermessage master formmessage => maybe demo -> aform (handlert master io) demo demoform demo = demo <$> areq textfield (fieldsettingslabel ("fieldone"::t.text)) (demofieldone <$> demo) <*> areq intfield (fieldsettingslabel ("fieldone"::t.text)) (demofieldtwo <$> demo) <*> areq boolfield (fieldsettingslabel ("fieldthree"::t.text)) (demofieldthree <$> demo) <*> areq dayfield (fieldsettingslabel ("fieldfour"::t.text)) (demofieldfour <$> demo)
and post method:
postdemonewr :: (yesod master,rendermessage master formmessage) => handlert democrud (handlert master io) html postdemonewr = tp <- getroutetoparent ((result,widget), encoding) <- lift $ runformpost $ renderbootstrap3 bootstrapbasicform $ demoform nothing case result of formsuccess demo -> _ <- lift $ rundb $ insert demo redirect demonewr _ -> lift $ defaultlayout $ let actionr = demonewr [whamlet| <form method=post action=@{tp demonewr} enctype=#{encoding}> ^{widget} <button .btn .btn-default> default text create |]
but have following error
not deduce (yesodpersistbackend master ~ persistent-2.1.3:database.persist.sql.types.sqlbackend) context (yesod master, rendermessage master formmessage) bound type signature postdemonewr :: (yesod master, rendermessage master formmessage) =>
i thing need add yesodpersist i'm not sure how
you need add following constraint postdemonewr
declaration:
yesodpersist master => yesodpersistbackend master ~ sqlbackend => …
the first constraint tells master
must have persistent abilities while second constraint tells backend used persistent should sql backend.
Comments
Post a Comment