1

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

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

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

4

1 回答 1

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 */ 
} );

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

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

查看http://guides.rubyonrails.org/layouts_and_rendering.html的“渲染 json”部分,因为它可能是在 js 上渲染您需要的数据的最有用的选项。

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

于 2012-06-19T22:26:39.203 回答