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

时间:2012-06-19 20:27:29

标签: javascript jquery ruby sinatra keyboard-shortcuts

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

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

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

1 个答案:

答案 0 :(得分:1)

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

由于您使用的是jQuery,请查看它的post()和ajax()函数。 (http://api.jquery.com/jQuery.post/

您可以执行类似

的操作
$.post("/my/handler", { name: "John" }, function(data) {
/* Do the updates on the page according to the data received from the server */ 
} );

然后你只需要设置你的铁路路线处理POST申请到/ my / handler。 (http://guides.rubyonrails.org/routing.html可能有用)。

您要呈现的网页将是$ .post回调函数(数据)上使用的数据,它不需要是正常的'网页,您可以渲染任何类型的文本数据,如json。

看看http://guides.rubyonrails.org/layouts_and_rendering.html,&#34;渲染json&#34;,因为它可能是渲染js所需数据的最有用的选项。< / p>

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