Erb Tag中的Javascript变量

时间:2015-11-20 09:37:59

标签: javascript ruby-on-rails erb

我正在尝试访问erb标记内的js.erb文件中的javascript变量。例如

my_variable = window.location.pathname.split(“/”)[2];

@project = Project.find(my_variable)

那么有没有办法在'find'助手中传递'my_variable'。

2 个答案:

答案 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现已弃用。

编辑(20-11-2015)

由于您似乎需要URL的特定段,因此只需调用original_url.split('/')[2]

即可轻松模拟使用ruby的JS实现

答案 1 :(得分:0)

您可以轻松使用TVViewElement Class Reference,如您所见

require "execjs"
ExecJS.eval "'red yellow blue'.split(' ')"

您可以轻松获得返回值。