Ruby on rails 基于Rails环境在Rails javascript资源中动态设置值
我有一个用于Recury的js文件:Ruby on rails 基于Rails环境在Rails javascript资源中动态设置值,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,我有一个用于Recury的js文件: (function() { // Required Recurly.config({ subdomain: 'MYSUBDOMAIN', currency: 'USD' }); })(); 我希望能够根据我的Rails环境切换subdomain属性,但要使此javascript可用于资产管道。这是否可能在资产管道中实现,或者实现同等功能的最佳方式是什么 这是一个令人失望的黑客解决方案,但您可以在包含资产管道化JS之前在文档
(function() {
// Required
Recurly.config({
subdomain: 'MYSUBDOMAIN',
currency: 'USD'
});
})();
我希望能够根据我的Rails环境切换subdomain属性,但要使此javascript可用于资产管道。这是否可能在资产管道中实现,或者实现同等功能的最佳方式是什么 这是一个令人失望的黑客解决方案,但您可以在包含资产管道化JS之前在文档的
中设置一个全局变量,然后在以后使用该变量,例如:
在应用程序.html.erb
中:
<head>
...
<%= javascript_tag "var subdomain = '#{request.subdomains.join(".")}';" %>
<%= javascript_include_tag "application" %>
...
</head>
嗨,巴里,欢迎来到SO!如果答案适合你,不要忘记以投票/接受的形式给其他用户反馈。或者,如果答案不起作用,请留言说明为什么不起作用:)谢谢!这样做:
var subdomain='#{RECURLY_subdomain}';“
将其放在config/initializer下的常量文件中,似乎不会编译文本,但…:RECURLY\u SUBDOMAIN=“MYSUBDOMAIN“
想法?我猜这是因为我是一个ruby var范围的新手,我希望这比什么都重要。然而,我想这并不能直接回答我原来的问题。。。还没有办法进入rails环境吗?因为在rails初始化之前,正在编译资产管道?var子域…
代码实际上让旧的JavaScript感到厌烦。这样做的目的是将Ruby变量注入JS变量中,以便JS的其余部分可以使用它。是的,关于在资产管道中你可以(或更多不能)做什么,你是正确的。本质上,您只能在编译时访问环境,也就是说,您不能访问请求对象,因为您的资产已经生成并作为静态文件使用。
(function() {
// Required
Recurly.config({
subdomain: subdomain,
currency: 'USD'
});
})();