gpt4 book ai didi

javascript - 在 ERB 中调用带参数的 ruby​​ 方法?

转载 作者:行者123 更新时间:2023-11-28 19:16:13 26 4
gpt4 key购买 nike

我正在将响应存储在 javascript 变量中。这是在 .html.erb 文件内。

var file = response.data.files[0];

我首先使用以下方式调用电话

var f = "<%=link_onedrive%>"

这成功调用了方法link_onedrive

然后我打了这个电话

var f = "<%=link_onedrive(%>file<%=)%>"

它抛出一个错误

wrong number of arguments (0 for 1)

我的问题是如何使用来自 erb 的参数进行 ruby​​ 方法调用。

已编辑

这是我的 link_onedrive

def link_onedrive(file)
uri = URI.parse("https://api.onedrive.com/v1.0")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new("https://api.onedrive.com/v1.0/drive/items/file.link/action.createLink)
req.content_type = "application/json"
req.body = '{"type" : "view"}'
response = http.request(req)
arr = JSON.parse(response.body)
arr["link"]["webUrl"]
end

最佳答案

好的...首先您需要了解 erb 的工作原理。

在 Controller 操作结束时:Rails 解析 erb 并首先运行所有 ruby​​ 并使用它生成一些 html+js 代码...此时,显示 <%= link_onedrive %> 的位被调用 link_onedrive 的结果完全覆盖方法...它不再存在于 html 中。

然后这个 html+js 被发送到浏览器,浏览器(在客户端的机器上)运行此时已经创建的 js。

你不能从 javascript 调用 ruby​​,因为到了那个阶段,已经没有 ruby​​ 了……只有 javascript。

如果您想从 javascript 调用 ruby​​ 方法 - 您可能需要设置一个 ajax-post 来发布到运行 ruby​​ 的 Controller ,然后返回 javascript 执行操作的结果。

或者我们需要帮助您重写这两位代码...以其他方式获得您真正想要的东西(但要做到这一点,我们可能需要看看 link_onedrive 实际做了什么)

关于javascript - 在 ERB 中调用带参数的 ruby​​ 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762910/

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