轨道中的数组序列在传递到角度时未正确转换

时间 2019-02-21
阅读 40
点赞 0
收藏 0
连接bijendra

我在当前应用程序中使用的是带有AngularJS的Rails 4.2。Rails控制器操作中的响应生成如下,作为API响应发送。Angular正在使用此API来相应地显示内容。

控制器响应

{
"switch": {},
"collections": {
    "valid_numbers": 1..12,

}}

处理该响应数据的AngularJS代码。

$scope.PortFilter = function (data) {
  return $scope.data.collections.valid_numbers.indexOf(data.PortNumber) > -1;
};

来自Rails的HTML代码

<tr ng-repeat="port in data.switch.ports_attributes| filter:PortFilter" display_port_number="{{port.display_port_number}}">
  <td style="vertical-align: middle" nowrap="nowrap">
    {{port.display_port_number}}
  </td>

如Firebug所示,浏览器中API的响应包含“有效数字”:1..12,而不是1到12之间的整数数组。 下面的响应与下面的代码片段中所示的硬编码一起正常工作,值以数组的形式出现。

{
"switch": {},
"collections": {
    "valid_numbers": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],

}}
建议答案

我想说,只需在响应中提供一个数组,而不是一个范围:

"valid_numbers": (1..12).to_a, # or [*1..12]

根据我所看到的,范围简单地转换为字符串:

(1..12).to_json
#=> "\"1..12\""

而数组保持数组:

(1..12).to_a.to_json
#=> "[1,2,3,4,5,6,7,8,9,10,11,12]"
👍 0