在rails模型和angularjs控制器之间共享一个恒定变量

时间:2015-07-07 11:50:45

标签: javascript ruby-on-rails angularjs

我正在寻找一个很酷的想法,如何在模型(轨道上的红宝石)和控制器(angularjs)之间共享一个恒定值。 在开始使用angular之前,我习惯在模型的常量变量中保存一些值,例如:

class MyModel << ActiveRecord::Base
  attr_accessor :sample1
  OPTIONAL_VALUES = ['val1', 'val2', 'val3', 'val4', 'val5']
end

这样我可以在我的两个视图中使用OPTIONAL_VALUES(例如,为了填充select标签)和我的模型验证(为了验证sample1不会获得任何不在的值列表)。

但是现在,我的客户端和我的观点与“rails side”分开并管理我的AngularJS,我仍然需要使用相同的OPTIONAL_VALUES数组。我不想重复代码,你知道我怎么能实现它吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ng-init将它们传递给:

<div ng-controller="ctrl" ng-init="inti('<%= stringify MyModel.OPTIONAL_VALUES with rails here %>')"/>

在控制器中,您可以创建一个类似init的方法:

function init(ov) {
     this.optionalValues = JSON.parse(ov);
}