Same page in Crystal
src/main.cr
require "kemal"
get "/" do
name = nil
age = nil
render "views/form.ecr"
end
post "/form" do |env|
name = env.params.body["name"].as(String)
age = env.params.body["age"].as(String)
render "views/form.ecr"
end
Kemal.run
views/form.ecr
<!DOCTYPE html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<h1>My Example Form</h1>
<form action="/form" method="POST">
Name: <input type="text" name="name">
Age: <input type="text" name="age">
<br>
<input type="submit">
</form>
<% if name %>
<p>Hi <%= name %>, you are <%= age %> years old</p>
<% end %>
</body>
</html>
I didn't put a bunch of tags on one line because that's gay. Either you minify it or you make it look presentable.