在 ERB 中使用参数调用 ruby 方法?
calling ruby methods with arguments inside ERB?
我正在 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 的工作原理。
在控制器操作结束时:Rails 解析 erb 并首先运行所有 ruby 并使用它生成一些 html+js 代码...此时点,表示 <%= link_onedrive %>
的位被调用 link_onedrive
方法的结果完全覆盖......它不再存在于 html 中。
然后 html+js 被发送到浏览器,浏览器(在客户端机器上)运行此时已经创建的 js。
您不能从 javascript 调用 ruby,因为到那个阶段,已经没有 ruby 了...只有 javascript.
如果您想从 javascript 中调用 ruby 方法 - 您可能需要设置一个 ajax-post,post 用于一个运行 ruby 的控制器,然后 returns 一个 javascript 做某事的结果。
或者我们需要帮助您重写这两位代码...以其他方式获得您真正想要的东西(但要做到这一点,我们可能需要了解 link_onedrive
实际做了什么)
我正在 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 的工作原理。
在控制器操作结束时:Rails 解析 erb 并首先运行所有 ruby 并使用它生成一些 html+js 代码...此时点,表示 <%= link_onedrive %>
的位被调用 link_onedrive
方法的结果完全覆盖......它不再存在于 html 中。
然后 html+js 被发送到浏览器,浏览器(在客户端机器上)运行此时已经创建的 js。
您不能从 javascript 调用 ruby,因为到那个阶段,已经没有 ruby 了...只有 javascript.
如果您想从 javascript 中调用 ruby 方法 - 您可能需要设置一个 ajax-post,post 用于一个运行 ruby 的控制器,然后 returns 一个 javascript 做某事的结果。
或者我们需要帮助您重写这两位代码...以其他方式获得您真正想要的东西(但要做到这一点,我们可能需要了解 link_onedrive
实际做了什么)