2017-05-12 4 views
0

je le JSON suivant que je convertir au hachage:clé spécifique de hachage dans Ruby

<% 
    json = '{ 
    "speed": 50, 
    "braking": 50, 
    "time_on_task": 50 
    }' 
    json = JSON.parse(json) 
%> 

Et actuellement je viens de boucle à travers eux et les afficher:

<ul> 
    <% json.each do |t| %> 
     <li><%= "<b>#{t.first.humanize}</b>: #{t.last}".html_safe %></li> 
    <% end %> 
</ul> 

Cependant je voudrais aime construire une méthode qui peut choisir un élément particulier par son nom de clé. par exemple. show_score(json, 'speed')

J'ai essayé:

def show_score(hash, key) 
    hash.select { |k| k == key } 
end 

qui vient retourne: {"speed"=>50}

J'essayé:

hash.select { |k, h| "<b>#{k.humanize}</b>: #{h}".html_safe if k == key }

Mais il retourne même ...

Comment puis-je obtenir j Ust retourner la chaîne dans le format que je veux si elles correspond à la clé?

+0

vous n'avez pas besoin d'une méthode pour cela .. ils fonctionnent comme hash [: key] –

Répondre

3
def show_score(hash, key) 
    "<b>#{key.humanize}</b>: #{hash[key]}" 
end 

Et je changerais cette

<% 
    json = '{ 
    "speed": 50, 
    "braking": 50, 
    "time_on_task": 50 
    }' 
    json = JSON.parse(json) 
%> 

dans

<% 
    hash = { 
    "speed" => 50, 
    "braking" => 50, 
    "time_on_task" => 50 
    } 
    json = hash.to_json 
%> 
+0

Faire cela juste renvoie '50' en faisant' json ['speed'] 'Comment faire J'imprime la chaîne que je veux en passant la clé? – Cameron

1

Je pense que vous pensez trop dur, ou peut-être je ne comprends pas votre question complètement.

<ul> 
    <% json.each do |k,v| %> 
     <li><%= "<b>#{k.humanize}</b>: #{v}".html_safe %></li> 
    <% end %> 
</ul> 

ps. en utilisant Enumerable#detect est tellement plus rapide que