Как выделить выражения xexpr в функции в Racket? - PullRequest
2 голосов
/ 05 апреля 2019

В моем приложении Racket web-server / insta у меня есть несколько повторяющихся <div> HTML, которые я хочу выделить в отдельную функцию, а затем вызвать ее с помощью params, чтобы сгенерировать div HTML внутри большего HTML-кода xexpr. Все, что я получаю на веб-странице, когда делаю это, это две строки параметров. Как я могу выделить код <div>?

Я попытался просто вызвать функцию из выражения в кавычках.
Я также попытался добавить ответ / xexpr перед цитируемым кодом <div> в функции div, но ничего не получилось.

;; Я хочу выделить <div> из этого кода в отдельную функцию.

(define (start request)
  (response/xexpr
   '(html (head (title "Testing")
          (body (form
                  (div ((class "form-group"))
                       (label ((for "public-id")) "Public Id")
                       (input ((type "text")
                               (name  "public-id")
                               (id    "public-id")
                               (placeholder "Enter public id"))))

;; Я попытался сделать это с помощью этой функции, как с кодом «response / xexpr», так и без него.

(define (input-field-html fld-name-id fld-caption)

 (response/xexpr

  '(div ((class "form-group"))
        (label ((for fld-name-id)) "Public Id")
        (input ((type "text")
                (name  fld-name-id)
                (placeholder fld-caption))))))

1 Ответ

3 голосов
/ 05 апреля 2019
#lang web-server/insta


(define (start request)
  (response/xexpr
   `(html (head (title "Testing")
                (body (form
                       ,(input-field-html "public-id" "Enter public id")))))))


(define (input-field-html fld-name-id fld-caption)
  `(div ((class "form-group"))
        (label ((for ,fld-name-id)) "Public Id")
        (input ((type "text")
                (name  ,fld-name-id)
                (placeholder ,fld-caption)))))

См:

...