我有一个非常简单的视图来显示“任务”。
用户输入输入后,我基本上想更新任务值。但是,我无法执行 ruby 语句来更新 .erb 中的任务。
我不确定如何在输入输入后更新 .rb 文件中的值。任何帮助,将不胜感激。
我有一个非常简单的视图来显示“任务”。
用户输入输入后,我基本上想更新任务值。但是,我无法执行 ruby 语句来更新 .erb 中的任务。
我不确定如何在输入输入后更新 .rb 文件中的值。任何帮助,将不胜感激。
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 上渲染您需要的数据的最有用的选项。
但请记住,如果这是一个用户会经常敲击键盘的应用程序,并且您需要快速处理它,那么每次他这样做时,您都将向您的服务器发出一个请求(这就像打开一个每次页面,只会更轻,因为您将只返回一小段文本而不是整个网页数据,但如果它有很多请求,它会增加您的服务器负载)。如果是这种情况并且会有很多同时用户,您可以考虑使用套接字构建您的应用程序以实现持久连接。