我正在尝试访问erb标记内的js.erb文件中的javascript变量。例如
my_variable = window.location.pathname.split(“/”)[2];
@project = Project.find(my_variable)
那么有没有办法在'find'助手中传递'my_variable'。
答案 0 :(得分:1)
另一种解决方案是在rails端获取URI,获取项目并将它们解析为JSON - 在js.erb中重新解析它们并将文件的内容发送到客户端。
通过这种方式,您无需在服务器上执行JS,并且您仍然可以在所需的JS文件中使用该项目。
This answer解释了如何获取不同rails版本的请求URI。
对于Rails 3.2或Rails 4 +
您应该使用
request.original_url
来获取当前网址。此方法记录在 http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url, 但如果你有点好奇,那么实施就是:
def original_url base_url + original_fullpath end
对于Rails 3:
你可以写
"#{request.protocol}#{request.host_with_port}#{request.fullpath}"
, 因为request.url
现已弃用。
由于您似乎需要URL的特定段,因此只需调用original_url.split('/')[2]
答案 1 :(得分:0)
您可以轻松使用TVViewElement Class Reference,如您所见
require "execjs"
ExecJS.eval "'red yellow blue'.split(' ')"
您可以轻松获得返回值。