2012-03-08 5 views
0

配送ポイントのリストを取得するために石鹸を使用している配送会社から情報を取得する必要があります。私が電話してSOAPリクエストを実行するために私のクラスを終え、これは、応答の形式である:石鹸からハッシュ応答を処理する最良の方法

{ 
:error_message=> "Code retour OK", 
:liste_point_retrait => 
[ 
    { 
     :horaires_ouverture_dimanche => "00:00-00:00 00:00-00:00", 
     :poids_maxi => "20000", 
     :conges_partiel => false, 
     :horaires_ouverture_vendredi => "09:00-12:00 14:30-18:00", 
     :acces_personne_mobilite_reduite => false, 
     :horaires_ouverture_jeudi => "09:00-12:00 14:30-17:30", 
     :nom => "BUREAU DE POSTE SAINT LEU D ESSERENT BP" 
    }, 
    { 
     :horaires_ouverture_dimanche => "00:00-00:00 00:00-00:00", 
     :poids_maxi => "20000", 
     :conges_partiel => false, 
     :horaires_ouverture_vendredi => "09:00-12:00 14:00- 17:00", 
     :acces_personne_mobilite_reduite => true, 
     :horaires_ouverture_jeudi => "09:00-12:00 14:00-17:00", 
     :nom => "BUREAU DE POSTE PRECY SUR OISE BP" 
    }, 
    { 
     :horaires_ouverture_dimanche => "00:00-00:00 00:00-00:00", 
     :poids_maxi=> "20000", 
     :conges_partiel => false, 
     :horaires_ouverture_vendredi => "08:30-12:00 14:30-17:00", 
     :acces_personne_mobilite_reduite => false, 
     :horaires_ouverture_jeudi => "08:30-12:00 14:30-17:00", 
     :nom => "BUREAU DE POSTE SAINT MAXIMIN BP" 
    } 
], 
:error_code=> "0", 
:qualite_reponse=> "1", 
:ws_request_id => "01587849465dc81b5eb19996cdd5d1cae4ead7766316f12e4fbfa6e86037caae" 
} 

問題は、今私は現在、私の見解では、それを表示するために情報を取得する方法を好きではないということです@pointsこのハッシュが含まれている場合、例えば私は私のコードでこれを使用します。

<% @points[:liste_point_retrait].each do |point| %> 
    <%= point[:nom] %> 
<% end %> 

は、この応答を処理するためのより良い方法はありますか?あなただけだけ次にあなたがし続けることができるキー?:

@points = @points[:liste_point_retrait] 

を使用:liste_point_retraitキーの内部のデータが必要な場合

<% @points.each do |point| %> 
    <%= point.name %> 
<% end %> 
+0

最後のセグメントで何をしたいですか? Rubyのハッシュは 'each'を持っています。ブロックに最初の引数としてキーを渡し、ブロックに最初の引数として渡します。とにかく、最初のアプローチに何が問題なのですか?または、あなたのデータを表すオブジェクトが必要ですか? – Linuxios

答えて

1

:私はこのような何かをするpossibiltyを持っているしたいと思いますあなたではなく、あなたがそれぞれのOpenStructを作成することができますpoint[:nom]point.nomを使用する場合は

<% @points.each do |point| %> 
    <%= point[:nom] %> 
<% end %> 

でこれを通過ハッシュ要素。それは次のとおりです。私はあなたの例ではnom VS nameを持っていると私はそれが意図的だかどうかわからない

@points.map! { |p| OpenStruct.new(p) 

参照してください。その場合は、これらのキーをすべて自分で翻訳する必要があります。

関連する問題