0

私はレールに正しい配列を持っていると思いますか?

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

ループを介して特定の部分を表示する方法を考えていました。たとえば、 と のみを表示するにはどうすればよいappleですnameか?

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

appleこれは @lv メッセージ全体を表示するだけで、とだけを表示するわけではありませんname。そして、特定の値のタグ付けされた値のみを取得できるようにしたいので、のタグ付けされた値を取得する必要がある場合は、 「レールでこれを行うにはどうすればよいですか?」appleのみを表示する必要がtagsあります。red

ありがとう!

4

1 に答える 1

1

変数@lvはハッシュであるため、を使用.eachすると、キーと値のペアの組み合わせがブロック パラメーターとしてのみ提供されます (最終的にはこのようになりますme)。代わりに、each_pair;を使用します。そうすれば、キーと値の個別の変数を取得できます。そのようです:

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

編集

これは、質問のコメントへの回答でもあります。は、ハッシュkeyapple、またはの一部になります。nameパラメータは、valueキーによって指されているものであり、この場合はアイテムの実際の配列です (タグと呼んでいるものだと思います)。たとえば、ハッシュには 2 つのキーと値のペアが含まれており、それらを反復処理すると、最初のループkey=applevalue=になり['tags', 'red']ます。その値の配列を出力するには、いくつかの方法があります。

タグ配列をループする

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

コンマ区切りの文字列として:

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

または、配列表記でそのまま吐き出すだけです。

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

value[0]または、値配列に特定の要素が必要な場合は、はい、またはvalue[1]...などを行うことができます。

それがあなたが求めているものではないかどうか教えてください。

于 2013-04-14T06:06:53.673 に答える