1

私はsinatraのハッシュデータにアクセスしようとしています:

require 'rubygems'
require 'sinatra'

class List 
   def self.items
   return items = {

   :something1 =>  { :attribute1 => "somestring1", :attribute2 => "somestring2" },
   :something2 =>  { :attribute1 => "somestring3", :attribute2 => "somestring4" }

   }
   end
end

list = List.items

get '/' do
   list.each do |name, meta|
      "#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
   end
end

sinatra が各ハッシュのハッシュ データを出力することを期待していました。ただし、代わりにハッシュのみを出力しました (おそらく を呼び出したためlist.each)。を使用すると、コンソールに期待される結果が出力されますputs

明確にするために、望ましい結果は次のとおりです。

something1
somestring1
somestring2

something2
somestring3
somestring4

シナトラに変数だけを出力させるにはどうすればよいですか?

ありがとう!

4

2 に答える 2

4

これを試して:

get '/' do
   s = ''
   list.each do |name, meta|
      s << "#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
   end
   return s
end
于 2012-04-29T01:54:25.487 に答える
2

mapの代わりに を使用eachし、結果を結合して文字列を返します。

get '/' do
  list.map do |name, meta|
    "#{name}<br>#{meta[:attribute1]}<br>#{meta[:attribute2]}<br><br>"
  end.join
end

each呼び出した配列を返します。map新しい配列を返し、ブロックに従って Enumerable の各エントリを変換します。

于 2012-04-29T01:56:55.533 に答える