У меня есть маршрут Genie, который отображает html-страницу. Страница должна отображать список html-элементов на основе столбца в таблице базы данных (например, список друзей):
route("/") do
html(refresh())
end
Функция обновления получает HTML из функции logFriend (которая использует макрос).
function refresh()
loggingPage = logFriend()
return loggingPage
end
Это сообщение (на странице также есть ввод текста и отправка). После отправки пользователем отображается кадр данных, показывающий содержимое обновленной таблицы базы данных.
route("/", method = POST) do
queries.insertFriend(postpayload(:friend))
refresh()
ob2 = getFriends()
return ob2
end
Ниже приведен макрос, который создает элементы HTML на основе столбца базы данных, и функция, которая добавляет их в HTML.
macro htmlFriends()
str1 = ""
friendList = getFriends().friend
for x in friendList
str = "<li>$x</li>\n"
str1 = str1 * str
end
return str1
end
function logFriend()
m1 = @htmlFriends
pa = "style='text-align:left"
logPage = """
<form action="/" method="POST" enctype="multipart/form-data">
<script>
for (let i=0; i<9;i++)
document.write("hi");
</script>
<body $pa> List of Friends
$m1
<div $pa>friend!
<input type="text" name="friend" value="" />
</div>
<div $pa>
<input type="submit" value="submit" />
</div>
</body>
</form>
"""
return logPage
end
Но элементы списка на странице не обновляются при обновлении.
Прямо сейчас, если я запущу функцию logFriend вручную, а затем повторно запущу маршрут с функцией обновления внутри, он отобразит нужные элементы. Но я не хочу обновлять вручную, я хочу, чтобы это было автоматически. Я попытался изменить обновление на макрос, который можно запустить на маршруте, но проблема не в этом. Буду признателен за любую помощь!