Javascript 如何从.erb视图文件中更新ruby变量?

Javascript 如何从.erb视图文件中更新ruby变量?,javascript,jquery,ruby,sinatra,keyboard-shortcuts,Javascript,Jquery,Ruby,Sinatra,Keyboard Shortcuts,我有一个显示“任务”的非常简单的视图 用户输入输入后,我基本上希望更新任务值。但是,我无法执行ruby语句来更新.erb中的任务 我不确定输入后如何更新.rb文件中的值。任何帮助都将不胜感激。Ruby代码在页面提供给用户之前运行,Javascript代码在用户在页面上时在用户客户端中运行,因此您无法从Javascript运行Ruby代码。 您可以做的是,使用Javascript向ruby服务器发送一个异步请求,该请求将获取变量并执行您想要执行的保存操作 由于您使用的是jQuery,请看一下它的p

我有一个显示“任务”的非常简单的视图

用户输入输入后,我基本上希望更新任务值。但是,我无法执行ruby语句来更新.erb中的任务


我不确定输入后如何更新.rb文件中的值。任何帮助都将不胜感激。

Ruby代码在页面提供给用户之前运行,Javascript代码在用户在页面上时在用户客户端中运行,因此您无法从Javascript运行Ruby代码。 您可以做的是,使用Javascript向ruby服务器发送一个异步请求,该请求将获取变量并执行您想要执行的保存操作

由于您使用的是jQuery,请看一下它的post()和ajax()函数。 ()

你可以这样做

$.post("/my/handler", { name: "John" }, function(data) {
/* Do the updates on the page according to the data received from the server */ 
} );
然后,您只需将rails路由设置为/my/handler即可处理请购单。 (可能有用)

您将呈现的网页将是$.post回调函数(data)上使用的数据,它不需要是“普通”网页,您可以呈现任何类型的文本数据,如json

请看“呈现json”一节,因为它可能是在js上呈现所需数据的最有用的选项

但请记住,如果这是一个应用程序,用户将经常敲击键盘,而您需要快速处理它,那么每次他这样做时,您都会向服务器发出一个请求(这就像每次打开一个页面,只会更轻松,因为你只会返回一小段文本,而不是整个网页数据,但如果是大量的请求,它会给你的服务器负载增加很多)。
如果是这样的话,将会有很多同时的用户,您可以考虑使用套接字来构建应用程序来进行持久连接。

Ruby代码在页面被服务到用户之前运行,JavaScript代码在页面上运行时在用户客户端中运行,因此您不能从JavaScript中准确地运行Ruby代码。 您可以做的是,使用Javascript向ruby服务器发送一个异步请求,该请求将获取变量并执行您想要执行的保存操作

由于您使用的是jQuery,请看一下它的post()和ajax()函数。 ()

你可以这样做

$.post("/my/handler", { name: "John" }, function(data) {
/* Do the updates on the page according to the data received from the server */ 
} );
然后,您只需将rails路由设置为/my/handler即可处理请购单。 (可能有用)

您将呈现的网页将是$.post回调函数(data)上使用的数据,它不需要是“普通”网页,您可以呈现任何类型的文本数据,如json

请看“呈现json”一节,因为它可能是在js上呈现所需数据的最有用的选项

但请记住,如果这是一个应用程序,用户将经常敲击键盘,而您需要快速处理它,那么每次他这样做时,您都会向服务器发出一个请求(这就像每次打开一个页面,只会更轻松,因为你只会返回一小段文本,而不是整个网页数据,但如果是大量的请求,它会给你的服务器负载增加很多)。
如果是这样的话,将会有很多同时的用户,你可以考虑使用套接字来构建你的应用程序。阿尔瓦罗,我会阅读并查看我是否能工作。FYI,我不使用Rails,但是西纳特拉,但是当然是一样的。在我研究一个THA之后,将发表另一个评论。nks alvaro,我会仔细阅读,看看是否能让它正常工作。仅供参考,我使用的不是rails,而是sinatra,但当然也是如此。我会在调查后再发表评论。。。