2017-01-18 4 views
0

В приложении rails запрос к матрице расстояний google возвращает правильные данные. Контроллер генерирует результат в объектесинтаксический анализ json из матрицы расстояний google

matrix.origins << origin 
matrix.destinations << destination 
matrix.data 
@data = matrix.data 

который представляет собой массив хешей. экземпляр переменной @data

возвращает [[#<GoogleDistanceMatrix::Route origin: #<GoogleDistanceMatrix::Place lat: 61.1173, lng: 13.8875>, destination: #<GoogleDistanceMatrix::Place lat: 61.3405325, lng: 13.7243266>, status: "ok", distance_text: "56.9 km", distance_in_meters: 56948, duration_text: "1 hour 6 mins", duration_in_seconds: 3944>]]

Однако <%= data["distance_text"].to_s %> оператор генерирует no implicit conversion of String into Integer, когда я не заинтересован в целое число. Таким образом, я подозреваю, что он вызывает индекс, когда я ожидал, что команда each обработает его. Как это можно сделать правильно?

ответ

0

Поскольку она использует индекс, используйте его!

<% @data.each do |index, data| %> 
    <div class="small-2 medium-2 large-2 columns text-center"> 
    <%= index.distance_text %> 
    </div> 
    <div class="small-2 medium-2 large-2 columns text-center"> 
    <%= index.duration_text %> 
    </div> 
<% end %> 
0

Если вы используете Ruby, 2.3x или более

@data.dig(0,0,:distance_text) 

ИЛИ

@data[0][0]["distance_text"] 
+0

Первый возвращает 'undefined method' dig 'для # Jerome

Смежные вопросы