我正在處理用於在Yesod中選擇日期時間的自定義字段(存儲爲UTCTime)。它使用Trent Richardson's timepicker。我其實已經開始工作了。唯一的問題是,我有一個處理程序而不是自定義字段中的JavaScript文件的靜態路由。當我將它移動到自定義字段時,出現錯誤。代碼(從yesod.form.fields主要是複製)的一部分低於:Yesod中的自定義字段中的靜態路由
jqueryDateTimeField :: (RenderMessage site FormMessage, YesodJquery site) => JqueryDaySettings -> Field (HandlerT site IO) UTCTime
jqueryDateTimeField jds = Field
{
fieldParse = parseHelper $ maybe (Left MsgInvalidDay) Right . readUTC . unpack
, fieldView = \theId name attrs val isReq -> do
toWidget [shamlet|
$newline never
<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{showVal val}">
|]
addScript' urlJqueryJs
addScript' urlJqueryUiJs
addScript $ StaticR js_jquery_ui_timepicker_addon_js -- Bad line here
addStylesheet' urlJqueryUiCss --error seems to occurs on the line below
toWidget [julius|
$(function(){
var i = document.getElementById("#{rawJS theId}");
$(i).datetimepicker({
dateFormat:'yy-mm-dd',
changeMonth:#{jsBool $ jdsChangeMonth jds},
changeYear:#{jsBool $ jdsChangeYear jds},
numberOfMonths:#{rawJS $ mos $ jdsNumberOfMonths jds},
yearRange:#{toJSON $ jdsYearRange jds}
});
});
|]
, fieldEnctype = UrlEncoded
}
,說addScript $ StaticR js_jquery_ui_timepicker_addon_js
是什麼引起的問題就行了。我知道這是因爲當我將該行放入調用此字段的處理程序中時,它可以工作。我得到一個錯誤信息說
DateTime.hs:73:13:
Could not deduce (site ~ App)
from the context (RenderMessage site FormMessage, YesodJquery site)
bound by the type signature for
jqueryDateTimeField :: (RenderMessage site FormMessage,
YesodJquery site) =>
JqueryDaySettings -> Field (HandlerT site IO) UTCTime
如此下去,但讓我困擾的是,錯誤似乎上錯行發生。 73行是以toWidget
開頭的行。所以,我的問題是,如何在自定義字段中使用靜態路由?如果有更多我應該提供的信息,請告訴我。謝謝。