Йесод: Как строить параметризованные маршруты - PullRequest
2 голосов
/ 18 сентября 2011

Я пытаюсь передать параметр в маршрут во время выполнения внутри шаблона деревушки.

  buildFeedRow :: Item [Attribute Text] -> GWidget a a ()
  buildFeedRow item = do
    let f = unpackItem item
        u :: Text = url f
    [whamlet|
    <tr>
      <td>
        <a href="#{url f}">#{url f}
      <td>#{nextCrawlTime f}
      <td>#{crawlDelay f}
      <td>
         <a href="@{DeleteFeedR u}">Delete
      <td>Edit |]

Сбой при ошибке типа.

Couldn't match type `Route a' with `ConsoleRoute'
Expected type: ConsoleRoute -> [(Text, Text)] -> Text
Actual type: Route a -> [(Text, Text)] -> Text
Expected type: GHandler
                 a a (ConsoleRoute -> [(Text, Text)] -> Text)
  Actual type: GGHandler
                 a
                 a
                 (Data.Enumerator.Iteratee Data.ByteString.Internal.ByteString IO)
                 (Route a -> [(Text, Text)] -> Text)
In the first argument of `lift', namely `getUrlRenderParams'
In the first argument of `(>>=)', namely `lift getUrlRenderParams'

Мой вопрос: как сделатьВы передаете параметры маршрутам в шаблоне деревушки.

1 Ответ

1 голос
/ 18 сентября 2011

Я думаю, что типовая подпись вашего виджета может быть слишком общей.Поскольку вы используете маршрут, теперь он зависит от типа вашего фундамента, поэтому он должен иметь тип

buildFeedRow :: Item [Attribute Text] -> GWidget YourFoundation YourFoundation ()
...