gpt4 book ai didi

javascript - 从 Ruby on Rails 模型调用 JavaScript 函数

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:49 25 4
gpt4 key购买 nike

我构建了一个 Rails 应用程序,它有一个返回 JSON 对象的 API。我想让用户编写自己的脚本并存储它们。然后,当用户对应用程序进行 API 调用并作为响应的一部分注入(inject)时,将执行这些脚本。

一个例子是当用户调用我的 API 时,他们的 javascript 将被调用,并且从他们的脚本返回的任何内容都将保存为字符串并由我的一个模型使用并用作 JSON 对象的一部分 - 而不是完整回复。

我想知道如何从 Rails 模型调用 javascript 函数,将 javascript 的输出保存为 Ruby 中的字符串,然后能够在进行 API 响应之前处理返回的任何内容。

目前的答案似乎只与 Controller 和渲染为 JS 有关,但我想从模型执行脚本。

应该是这样的:

string = execute_javascript("return 'hello world';")

与 Rails 相比,它与纯 Ruby 的关系更密切,因为我只想从标准 Ruby 类中调用它并将输出保存为字符串。我还需要考虑这样做的安全隐患,但首先想知道如何做

最佳答案

执行最常见 Javascript 代码的最简单解决方案是使用 ExecJS gem 。如果您使用的是 Rails 标准 gem 包,则 ExecJS 已包含在 Rails Coffeescript 中。一个简短的例子:

require "execjs"
ExecJS.eval "'red yellow blue'.split(' ')"
# => ["red", "yellow", "blue"]

以上解决方案仅适用于运行原型(prototype)。在生产中,您可能希望以某种方式在沙箱中运行用户代码,最好是在整个不同的服务器上运行。您还需要确保代码在执行时不会占用 100% 的服务器资源,并筛选代码以确保它不会执行任何恶意操作。

关于javascript - 从 Ruby on Rails 模型调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com