从Ruby on Rails模型调用JavaScript函数
Call JavaScript function from Ruby on Rails model
我已经构建了一个Rails应用程序,它有一个返回JSON对象的API。我希望允许用户编写自己的脚本并存储它们。当用户调用应用程序的API时,这些脚本将被执行,并作为响应的一部分注入。
一个例子是当用户调用我的API时,他们的javascript将被调用,并且从他们的脚本返回的任何内容将被保存为字符串并由我的一个模型使用,并用作JSON对象的一部分-而不是完整的响应。
我想知道如何从rails模型调用javascript函数,将javascript的输出保存为Ruby中的字符串,然后能够在做出API响应之前处理返回的任何内容。
当前的答案似乎只与控制器和渲染为JS有关,但我想从模型执行脚本。
应该是这样的:
string = execute_javascript("return 'hello world';")
这与纯Ruby比Rails更相关,因为我只是想从标准Ruby类调用它并将输出保存为字符串。我还需要考虑这样做的安全含义,但首先想知道如何做到这一点
执行大多数常见Javascript代码的最简单的解决方案是使用ExecJS gem。如果你使用的是Rails标准gem包,那么ExecJS
已经包含在Rails Coffeescript
中了。一个简短的例子:
require "execjs"
ExecJS.eval "'red yellow blue'.split(' ')"
# => ["red", "yellow", "blue"]
上述解决方案只适用于运行原型的情况。在生产环境中,您可能希望以某种方式在沙箱中运行用户代码,最好是在完全不同的服务器上运行。您还需要确保代码在执行时不会占用服务器100%的资源,并筛选代码以确保它不会做任何恶意的事情。
你可以在Helper类中调用javascript函数,然后在你需要的地方将该Helper包含在你的模型中。
相关文章:
- 我需要从php调用javascript或jquery
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用html表单中的参数调用JavaScript函数
- 可以´t调用JavaScript中的函数
- 在按钮上调用Javascript函数
- 如何从Objective-C代码中调用javascript代码
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 可以't在Jasmine中调用Javascript函数
- 在page_load事件上调用javascript函数
- 如何在ajax中调用javascript对象的方法
- 如何使用WPF调用JavaScript对象的函数
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 从附加文本调用javascript(订单车)
- 在线程循环中调用JavaScript
- 在指定时间后多次调用Javascript中的函数
- 未调用Javascript onscroll事件
- 如何正确调用Javascript中的匿名函数
- 从字符串调用javascript函数
- 无法从活动调用 javascript 函数