Последовательность массивов в Rails не преобразуется должным образом при передаче в угловые - PullRequest
0 голосов
/ 21 февраля 2019

Я использую Rails 4.2 с angularjs в текущем приложении.Ответ в действии контроллера Rails генерируется, как показано ниже, и отправляется как Ответ API.Этот API используется Angular для отображения содержимого соответственно.

Ответ от контроллера

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

}}

Код Angularjs, который работает с этими данными ответа.

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

HTML-код от Rails

<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 в браузере содержит «valid_numbers»: 1..12, а не массив целых чисел от 1 до12. Ниже отклик работает правильно с жестко закодированным, как видно из фрагмента ниже, значения поступают в виде массива.

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

}}

1 Ответ

0 голосов
/ 21 февраля 2019

Я бы сказал, просто укажите в ответе массив, а не диапазон:

"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]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...