1

radiofieldList のラベルとして html をレンダリングしようとすると、次のエラーが発生しました。

Handler/Manager.hs:91:32:
No instance for (RenderMessage Scheduler (Handler RepHtml))
  arising from a use of `radioFieldList'
Possible fix:
  add an instance declaration for
  (RenderMessage Scheduler (Handler RepHtml))
In the first argument of `mreq', namely `(radioFieldList bPairs)'
In a stmt of a 'do' block:
  (jobRes, jobView) <- mreq
                         (radioFieldList bPairs) "Scheduled Jobs" Nothing
In the expression:
  do { let bPairs = buttonPairs kjPairs
           statusPairs
             = map (pack . show &&& id) $ ([minBound .. maxBound] :: [Status            ]);
       (jobRes, jobView) <- mreq
                              (radioFieldList bPairs) "Scheduled Jobs" Nothing;
       (noteRes, noteView) <- mreq textareaField " Notes " Nothing;
       (statusRes, statusView) <- mreq
                                    (selectFieldList statusPairs) " Status " Nothing;
       .... }

したがって、以下のコードを考えると、インスタンスを作成するのは理にかなっていますか?(RenderMessage Scheduler (Handler RepHtml))

statusForm :: RForm CapturedData
statusForm kjPairs extra = do
let bPairs = buttonPairs kjPairs
    statusPairs = map (pack . show &&& id) $
                  ([minBound .. maxBound] :: [Status])
(jobRes ,jobView) <- mreq (radioFieldList bPairs) "Scheduled Jobs" Nothing
(noteRes, noteView) <- mreq textareaField " Notes " Nothing
(statusRes, statusView) <- mreq (selectFieldList statusPairs) " Status " Nothing    -- as of 0.9.4.x it is just best to explicitly type widgetFile
let widget = toWidget ($(widgetFile "status") :: Widget)
return (CapturedData <$> jobRes <*> statusRes  <*> noteRes
       , widget)

buttonPairs :: [KeyJobPair] -> [(Handler RepHtml,KeyJobPair)]
buttonPairs kjList = sort $ map buttonPairs' kjList
  where buttonPairs' :: KeyJobPair -> (Handler RepHtml,KeyJobPair)
    buttonPairs' (KeyJobPair ((Key key), JobData (Firmware product)
                                           (Version version)
                                           (StartDate sDate)
                                            status)) =
      let (Right jid) = fromPersistValue key :: Either Text Int64
      in (hamletToRepHtml [hamlet|<a href=@{RootR}(" Job Id " ++ (show jid))>|]
         ,KeyJobPair (Key key, JobData (Firmware product)
                                       (Version version)
                                       (StartDate sDate)
                                       status))

(HTML,a)思いついたのですが、本当の答えは、必要な要求ではなく、受け入れるカスタム フィールドを作成することです(msg,a) radioFieldList。インスタンスを作成するだけでうまくいくことを願っていますRenderMessage

4

1 に答える 1

1

hamletToRepHtmlおそらくそこに電話する必要はありませrenderHtmlText.Hamlet

このマシンには yesod がインストールされていません (そのため確認できません) が、正しい方向に進むはずです。それをウィジェットにしたくないので、レンダリングしたいだけだと思います。

于 2012-02-17T00:25:49.063 に答える