【问题标题】:Javascript variable inside Erb TagErb 标签内的 Javascript 变量
【发布时间】:2015-11-20 09:37:58
【问题描述】:

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

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

@project = Project.find(my_variable)

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

【问题讨论】:

标签: javascript ruby-on-rails erb


【解决方案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 现在已弃用。

编辑(2015 年 11 月 20 日)

由于您似乎需要特定的 url 段,您可以通过简单地调用 original_url.split('/')[2] 轻松地用 ruby​​ 模拟 JS 实现

【讨论】:

    【解决方案2】:

    如您所见,您可以轻松使用 https://github.com/sstephenson/execjs

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

    您可以轻松获取返回值。

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2011-01-20
      • 2016-07-03
      相关资源
      最近更新 更多