Невозможно получить переменную из библиотеки в Rails - PullRequest
0 голосов
/ 19 марта 2020

Я создаю приложение RoR, которое извлекает мой экземпляр Netbox (IPAM с открытым исходным кодом) для отображения наших виртуальных машин.

Я использую Lib netbox в ruby (https://github.com/ninech/netbox-client-ruby) ), это также работает, но у меня есть проблемы с получением переменной.

Возможно, это мой низкий уровень в Ruby причина, но я не могу найти ответ.

Я выбираю виртуальные машины в моем контроллере

vms = NetboxClientRuby.virtualization.virtual_machines.filter(cluster_id: cluster_id)

Я использую переменную @vms в моих файлах ERB html

 <% @vms.each do |vm| %>
        <tr>
# This Work well
            <td><%= vm.name %></td>
            <td><%= vm.vcpus %></td>
            <td><%= vm.memory %>Mo</td>
            <td><%= vm.disk %>Go</td>
# This doesn't work
            <td> <%= vm.primary_ip.address %></td>   
        </tr>
<% end %>

Я пробовал vm.primary_ip['address'], vm.primary_ip('address') и несколько других способов, но Мне не удается получить основной IP-адрес виртуальной машины.

Я получил ошибку, подобную этой:

undefined method `address' for #NetboxClientRuby::IPAM::IpAddress:0x00007ffff51d63c8

Есть идеи?

Объект Json из библиотеки lib выглядеть так:

{"id"=>159,
 "name"=>"VM1", 
 "status"=>{"value"=>"active", "label"=>"Active", "id"=>1}, 
 "tenant"=>nil, 
 "primary_ip"=>{"id"=>916, "url"=>"", "family"=>6, "address"=>"200e::1/64"}, 
 "config_context"=>{}, 
 "created"=>"2018-07-19", 
 "last_updated"=>"2018-08-16T11:29:17.695587+11:00"
}

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Я исправил это с помощью vm[:primary_ip].to_h["address"]

Почему мне нужно переместить это to_ha sh?

Спасибо за помощь

0 голосов
/ 19 марта 2020

Вам необходимо получить вложенное значение га sh. Попробуйте использовать это:

vm.dig('primary_ip', 'address')

https://apidock.com/ruby/Hash/dig

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...