【问题标题】:Access Rails env variable from Angular Controller从 Angular 控制器访问 Rails 环境变量
【发布时间】:2016-02-17 20:32:21
【问题描述】:

我有以下名为 EnvConfigurationService,js.erb 的模块:

#../angular/services/config/EnvConfigurationService,js.erb

angular.module('mgApp.services').factory('EnvConfigurationService', function () {
return {
    getMySecretKey: function () {
        return "<%= ENV['MY_SECRET_KEY'] %>";
    }
  }
});

目的是提供从不同的 Angular 和常规 js 类访问“MY_SECRET_KEY”的权限。像 userController.js 上的以下内容:

angular.module('mgApp.controllers').controller('userController', ['$scope', '$http', 'EnvConfigurationService', function($scope, $http, EnvConfigurationService) {
  var uri = EnvConfigurationService.getMySecretKey();
  ...
}]);

不过,返回的字符串始终为空。有什么想法可能是错误/遗漏的吗?

提前致谢

【问题讨论】:

    标签: javascript ruby-on-rails angularjs environment-variables


    【解决方案1】:

    This website shows 4 great ways to pass info from Rails to Angular

    选项编号 3 指出,如果您要使用这样的插值,您可能需要调用 .html_safe,如本例所示。

    itemsApp.service('itemsAppInitializer', function(){
      return <%= @item.to_json.html_safe %>;
    });
    

    在我看来,如果您愿意,可能还有另一种方法可以解决此问题。我会在 Rails 中创建一个路由,在响应中向您返回 env 变量。

    然后,每当服务第一次需要提供环境变量时,您可以使用$http.get() 和在服务调用中添加的cache: true 选项从路由/控制器中获取该数据,并且只需要获取它一次。

    【讨论】:

    • 添加 html_safe 成功了,@Sean Larking。谢谢!
    • :-D 享受。那篇文章的道具也是如此。
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2015-12-18
    • 2011-01-26
    • 2021-03-30
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多