2017-07-25 5 views
-5

単一のハッシュの値をマージする方法はありますか?単一のハッシュの値をマージする方法は?

例:

address = { 
    "apartment" => "1", 
    "building" => "Lido House", 
    "house_number" => "20", 
    "street_name" => "Mount Park Road", 
    "city" => "Greenfield", 
    "county" => nil, 
    "post_code" => "WD1 8DC" 
} 

私たちはこのように見える成果を得ることができますか?

1 Lido House, 
20 Mount Park Road, 
Greenfield, 
WD1 8DC 

address.compactは皆無に等しい値が、どのような方法であなたは、文字列の補間が含まれている場合は削除されます、あなたは、いくつかのアドレスのゼロ値を除外したいと最後にカンマなしで他人のためにそれを含めます?

def address(hash) 
    hash.compact 
    puts "#{hash["apartment"]} #{hash["building"]}, \n#{hash["house_number"]} #{hash["street_name"]}, \n#{hash["city"]}, \n#{hash["county"]}, \n#{hash["post_code"]}" 
end 
+2

これまでに何を試みましたか?考えられる解決策の1つは、値の文字列を連結するハッシュのすべてのキーを調べることです。 – hrust

+0

誰もが答えた後、あなたは質問を変更しました!要約すると:いいえ、ルビがいくつかの値が 'nil'であれば、文字列をどのようにフォーマットするのかを単に知るための"魔法の "方法はありません。この論理を自分で書く必要がありますが、あまり複雑ではありません。 'result'変数を作成して、単純な条件文に基づいて追加してください。 'Hash#compact'の使用も不要です(何もしていません!)。 –

+0

はい、質問を削除して再転記することを考えていましたが、既に回答があったので、私はその人に信用を与えると思いました。 私は変数を作成してそれに追加しなかったことを除いて、あなたが提案したものに似た何かをしました。 私はまだそれを提出する前に学習しており、質問に答える別の方法を見つけようとしていました。 技術コミュニティには何が起こったのですか? – AshNaz87

答えて

0

あなたは、文字列内の値に参加する必要があります。

def formatted_address(address) 
    <<~ADDRESS 
    #{address['house_number']} #{address['street_name']}, 
    #{address['city']}, 
    #{address['post_code']} 
    ADDRESS 
end 

使用法:あなたはまた、ヘルパーメソッドこれを行うと、ヒアドキュメントを使用して書式設定を向上させることができ

"#{address['house_number']} #{address['street_name']},\n#{address['city']},\n#{address['post_code']}" 

address = { 
    "house_number" => 20, 
    "street_name" => "Mount Park Road", 
    "city" => "Greenfield", 
    "post_code" => "WD1 8DC" 
} 

puts formatted_address(address) 
    # => 20 Mount Park Road, 
    # Greenfield, 
    # WD1 8DC 
0

string formats

"%{house_number} %{street_name},\n%{city},\n%{post_code}" % address 
+0

これは、ハッシュキーが** 'Symbol's **の場合にのみ有効です。 OPの質問では、ハッシュキーに 'String'が使用されています。これがRailsプロジェクト内にある場合(つまり、あなたが 'ActiveSupport'を持っている場合)、これは便利な方法は[' Hash#symbolize_keys'](https://apidock.com/rails/Hash/symbolize_keys)です。 –

+0

「%{house_number} ....」%address.symbolize_keys' –

+0

あなたは正しいです。しかし、Railsでは 'HashWithIndifferentAccess'となるので、うまくいくでしょうか? –

関連する問題