首页 > 解决方案 > Rails - 包含带有动态(每个请求)文件名的javascript标记?

问题描述

在里面assets/javascripts/locales,我有一堆资产,比如:

en-GB.js.erb
en-CA.js.erb

等等。语言环境显然会根据请求而改变,所以我试图包含一个这样的 JS 标记:

<%= javascript_include_tag 'locales/#{I18n.locale}.js' %>

但是,我最终看到了这个错误:

The asset "locales/.js" is not present in the asset pipeline.

所以看起来变量插入工作不正常,虽然我已经I18n.locale在同一个文件的其他地方使用了。

我该如何做到这一点?尽管locales/#{I18n.locale}.js每个请求都会发生变化,但实际资产本身确实是静态的。

标签: javascriptruby-on-railsruby-on-rails-4

解决方案


带单引号的字符串文字不会插入,你会得到

<script src="/javascripts/locales/.js#{I18n.locale}.js"></script>

将部分#视为 url 锚部分

尝试

javascript_include_tag "locales/#{I18n.locale}.js"

推荐阅读