Javascript Erb 标签内的变量

Javascript variable inside Erb Tag

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

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

@project = Project.find(my_variable)

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

你可以很容易地使用 https://github.com/sstephenson/execjs ,如你所见

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

您可以轻松获取返回值。

另一种解决方案是获取 rails 端的 URI,获取项目并将它们解析为 JSON - 在 js.erb 中重新解析它们并发送文件内容到客户端。

这样你就不必在你的服务器上执行 JS,你仍然可以在你需要的 JS 文件中拥有项目。

This answer 解释了如何获取不同 rails 版本的请求 URI。

For Rails 3.2 or Rails 4+

You should use request.original_url to get the current URL.

This method is documented at http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url, but if you're curious, the implementation is:

def original_url
    base_url + original_fullpath
end

For Rails 3:

You can write "#{request.protocol}#{request.host_with_port}#{request.fullpath}", since request.url is now deprecated.

编辑 (20-11-2015)

由于您似乎需要 url 的特定部分,您可以通过简单地调用 original_url.split('/')[2]

轻松地使用 ruby 模拟 JS 实现