Javascript 如何正确管理Sinatra网页中的输入

Javascript 如何正确管理Sinatra网页中的输入,javascript,sinatra,Javascript,Sinatra,为了演示,我正在开发一个超级简单的Sinatra应用程序,我想知道是否有更好的方法来实现它 ruby程序非常简单(注意:下面只粘贴了相关部分): 然后我的html就更容易了(注意:下面只粘贴了相关部分): 视图计数(): 加载主页时,计数器将增加1。当您单击submit按钮时,计数器增加2(一个是因为我提交的操作,另一个是因为重定向到主页)。那很好。这就是我想要的 然而,由于Sinatra的工作方式,当我按下Submit按钮时,基本上整个页面都会重新加载。对于这样一个简单的页面来说,这很好,但

为了演示,我正在开发一个超级简单的Sinatra应用程序,我想知道是否有更好的方法来实现它

ruby程序非常简单(注意:下面只粘贴了相关部分):

然后我的html就更容易了(注意:下面只粘贴了相关部分):

视图计数():
加载主页时,计数器将增加1。当您单击submit按钮时,计数器增加2(一个是因为我提交的操作,另一个是因为重定向到主页)。那很好。这就是我想要的

然而,由于Sinatra的工作方式,当我按下Submit按钮时,基本上整个页面都会重新加载。对于这样一个简单的页面来说,这很好,但我担心对于一个更复杂的应用程序来说,重新加载整个网页可能是一个过于繁重的操作。当然不优雅

我想知道我是否试图过度拉伸Sinatra(如果我想做这些事情,我应该切换到角度),或者我是否可以在Sinatra中使用一些方法来“增加”,而不必调用方法+重定向到
/


谢谢

如果您不想重新加载整个页面,您有两个选择:要么使用iframes(请不要使用iframes),要么使用JavaScript中的后台通信机制,如AJAX或WebSockets。Sinatra可以轻松地处理AJAX请求。现在,如果您希望Sinatra生成JavaScript代码来执行AJAX请求,就像一些web框架所做的那样(比如Angular),那么不,Sinatra不会这样做。您必须自己实现JavaScript。专业提示:使用jQuery可以让你的生活更轻松。

如果你不想重新加载整个页面,你有两个选择:要么使用iframes(请不要使用iframes),要么使用JavaScript中的后台通信机制,如AJAX或WebSocket。Sinatra可以轻松地处理AJAX请求。现在,如果您希望Sinatra生成JavaScript代码来执行AJAX请求,就像一些web框架所做的那样(比如Angular),那么不,Sinatra不会这样做。您必须自己实现JavaScript。专业提示:为此使用jQuery,它将使您的生活更轻松

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
        <em style="color: blue; font-style: italic"> Views count (<%= @pageviews %>):</em>

        <form method="post" action="/increase">
            <input class='btn btn-primary' type='submit'>
        </form>