2012-03-10 5 views
0

私はSinatraを使用しており、ERBでビューをレンダリングしています。 私は、次のアクションERBがローカルハッシュの一部の値を取得していません

get '/user/:id' do 
    u = @users.retrieve(params[:id]) 
    u[:mykey] = [1,2,3] 
    erb(:user, :locals => { :user => u }) 
end 

を持っているとビューは、この

<body> 
    <h1><%= user["name"] %></h1> 

    <pre><%= user["mykey"].to_json %></pre> 

のように見えると私は[1,2,3]配列を取得することを期待ところ、私は大きな脂肪nullを取得します。 名前のようなプリミティブ値は問題なく渡されます。

答えて

3

これはHashクラスまたはHashWithIndifferentAccessクラスですか?

user[:mykey]を設定し、user["mykey"]を取得しています。シンボルや文字列を使用し、HashWithIndifferentAccessを使用していない限り、それらを混用しないでください。

+0

yay!それがチケットです。ハッシュをHashWithIndifferentAccessに変換する方法の手掛かりはありますか? – Dan

+0

私はあなたがそれらにアクセスしている方法について一貫していることを確認するだけです。しかし、このように変換することができます: 'indifferent_hash = hash.with_indifferent_access'。ハッシュで 'symbolize_keys! 'を呼び出すこともでき、すべての文字列キーをシンボルに変換します。 – JohnColvin

関連する問題