Ich arbeite an einer super einfachen Sinatra-App für Demozwecke und ich frage mich, ob es einen besseren Weg gibt, es zu implementieren.Wie man Eingänge in einer Sinatra-Webseite richtig verwaltet
Der Rubin Programm ist super einfach (Anmerkung: nur der relevante Teil unten eingefügt):
get '/' do
redis = Redis.new
redis = Redis.new(:host => settings.redis, :port => 6379)
redis.incr("pageviews")
@pageviews = redis.get("pageviews")
@hostname = Socket.gethostname
erb :webapp
end #get/
post '/increase' do
redis = Redis.new
redis = Redis.new(:host => settings.redis, :port => 6379)
redis.incr("pageviews")
@pageviews = redis.get("pageviews")
@hostname = Socket.gethostname
redirect '/'
end #post /increase
Und dann meine html ist noch einfacher (Anmerkung: nur der relevante Teil ist unten eingefügt):
Wenn Sie die Startseite laden, wird der Zähler um 1 erhöht. Wenn Sie auf die Senden-Schaltfläche klicken, erhöht sich der Zähler um 2 (einer wegen der Aktion, die ich übergebe und einer wegen der Weiterleitung an die Homepage). Das ist gut. Das ist, was ich will.
Allerdings, wie Sinatra funktioniert, wenn ich den Submit-Button drücken, was passiert ist, dass im Grunde die gesamte Seite neu geladen wird. Für eine einfache Seite wie diese ist es in Ordnung, aber ich fürchte, dass für eine komplexere App das Neuladen der gesamten Webseite eine zu schwere Operation sein kann. Sicherlich nicht elegant.
Ich frage mich, ob ich versuche, Sinatra zu sehr zu strecken (und wenn ich diese Dinge tun möchte, sollte ich zu etwas wie Angular wechseln) oder wenn es Wege gibt, die ich in Sinatra anwenden kann, um das zu erhöhen. ohne eine Methode + Umleitung auf /
aufrufen zu müssen?
Danke.