Извлечение конкретной информации о хэше JSON в представление Rails

#ruby-on-rails #arrays #json #ruby-on-rails-5

#ruby-on-rails #массивы #json #ruby-on-rails-5

Вопрос:

Я пытаюсь реализовать платежи в биткойнах, используя Block.io , и когда я запрашиваю баланс с биткойн-адреса, он отвечает хэшем. Как я могу извлечь конкретную информацию и сделать данные удобными для пользователя.

Хэш, из которого мне нужно извлечь информацию, выглядит следующим образом:

 {"status"=>"success", "data"=>{"network"=>"BTCTEST", "available_balance"=>"0.01000000", "pending_received_balance"=>"0.00000000"}} 
  

У меня есть контроллер с методом:

 class PaymentsController < ApplicationController
   def index
     @balance = BlockIo.get_balance
   end
end
  

И в представлении, которое у меня есть:

 <%= @balance.each do |bal| %>
   <p>Balance: <%= bal[1]["available_balance"] %></p>
<% end %>   
  

И результат, который я получаю в представлении index.html.erb, выглядит следующим образом:

 Balance:

Balance: 0.01000000

{"status"=>"success", "data"=>{"network"=>"BTCTEST", "available_balance"=>"0.01000000", "pending_received_balance"=>"0.00000000"}} 
  

Как вы можете видеть выше, он показывает баланс дважды, а также по-прежнему показывает хэш в представлении.

Как я могу показать только баланс: 0.01000000?Любая помощь или комментарий приветствуются.

Ответ №1:

Во-первых, это Hash , не Array :

 {"status"=>"success", "data"=>{"network"=>"BTCTEST",  "available_balance"=>"0.01000000", "pending_received_balance"=>"0.00000000"}} 
  

Во-вторых, вы можете сделать это в своем файле представления:

 <p>Balance: <%= @balance["data"]["available_balance"] %></p>
  

Комментарии:

1.@MorezSA Вы можете сделать это: routes.rb get 'payment/result=:balance' => 'payment#show', as: :test_payment в вашем контроллере: def показать конец в вашем представлении: test_payment_path(@balance["data"]["available_balance"])