【问题标题】:How to update a ruby variable from within the .erb view file?如何从 .erb 视图文件中更新 ruby​​ 变量?
【发布时间】:2012-06-22 23:37:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery ruby sinatra keyboard-shortcuts


    【解决方案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 路线来处理 POST 申请到 /my/handler。 (http://guides.rubyonrails.org/routing.html 可能有用)。

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

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

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

    【讨论】:

    • 感谢阿尔瓦罗,我会仔细阅读,看看我是否可以正常工作。仅供参考,我使用的不是rails,而是sinatra,但当然也是如此。在我调查一下后会发表另一条评论...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2018-07-30
    • 2022-01-27
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多