2013-04-14 5 views
0

Je pense avoir un tableau correct pour les rails?obtenir des valeurs spécifiques à partir du réseau de rails

@lv = {'apple' => ['tags', 'red'], 'name' => ['more tags', 'taggers']} 

Je me demandais comment je pouvais afficher certaines parties à travers une boucle. Par exemple, comment afficher uniquement apple et name?

<% @lv.each do |me| %> 
    <%= me %> 
<% end %> 

Ce juste affiche l'ensemble du message de @lv, et ne affiche que apple et name. Et puis je voudrais être en mesure d'obtenir seulement les valeurs étiquetées de certains, alors disons si j'ai besoin d'obtenir la valeur étiquetée de apple, il devrait seulement afficher tags et red Comment puis-je faire cela avec des rails?

Merci!

+0

En ce qui concerne la deuxième partie de votre question, que signifie «les valeurs marquées de celles spécifiques»? L'élément 'tags' du tableau est-il spécial d'une manière ou d'une autre? –

+0

@Teeg Je veux être en mesure de sortir chaque tag, si je son quelque chose comme la clé [0] ou quelque chose? Je ne sais pas comment c'est, mais si c'est quelque chose comme PHP, j'appellerais le premier tableau et puis il sortira les valeurs de la première clé de tableau qui est apple (en utilisant une boucle avec la clé [0] ou quelque chose), cela a plus de sens? – hellomello

+1

@andrewlio Voir la réponse à la mise à jour –

Répondre

1

votre variable @lv est un hachage, donc en utilisant .each ne vous donnera une paire combinée clé-valeur comme paramètre de bloc (c'est ce que me finit par être). Au lieu de cela, utilisez each_pair; De cette façon, vous pouvez obtenir des variables séparées pour les clés et les valeurs. Comme si:

<% @lv.each_pair do |key, value| %> 
    <%= key %> 
<% end %> 

Modifier

Ceci est en réponse à votre commentaire dans la question ainsi. Le key finira par être le apple, ou name, une partie de votre hachage. Le paramètre value est tout ce qui est pointé par la clé, qui dans ce cas est le tableau réel des éléments (ce que je pense est ce que vous appelez des balises). Par exemple, votre hachage contient deux paires valeur/clé et, au cours de leur itération, dans la première boucle key = apple et value = ['tags', 'red']. Pour la sortie de ce tableau de valeurs, vous pouvez le faire deux ou trois façons différentes:

Boucle sur le tableau tag

<% @lv.each_pair do |key, value| %> 
    <%= key %> 
    <%= value.each do |tag| %> 
     <%= tag %> 
    <%= end %> 
<% end %> 

une virgule chaîne séparée:

....looping code 
    <%= value.join(", ") %> 

Ou tout simplement cracher hors comme dans la notation de tableau:

....looping code 
    <%= value %> 

Ou si vous vouliez juste un élément spécifique dans la valeur arra y, alors oui, vous pouvez simplement faire value[0], ou value[1] ... etc. Faites-moi savoir si ce n'est pas ce que vous demandez.

+0

Je veux être capable de sortir la clé dans un type de lien. Donc, si l'utilisateur clique sur 'apple', les tags devraient apparaître. En d'autres termes, comment est-ce que je produis juste les balises qui sont spécifiques aux noms seulement ('apple' ou' name')? – hellomello

+1

@andrewliu Réponse mise à jour. –

+0

C'est exactement ce que je demande! Merci beaucoup! – hellomello

Questions connexes