Лучший способ справиться с хэш-ответом от мыла - PullRequest
0 голосов
/ 08 марта 2012

Мне нужно получить некоторую информацию от компании доставки, которая использует мыло, чтобы получить список точек доставки.Я закончил свои уроки, чтобы позвонить и выполнить запрос мыла, и это формат ответа:

{
: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.each do |point| %>
   <%= point.name %>
<% end %>

1 Ответ

1 голос
/ 08 марта 2012

Если вам нужны только данные внутри клавиши :liste_point_retrait, используйте только эту клавишу?:

@points = @points[:liste_point_retrait]

Затем вы можете продолжить проходить через

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

Если вы предпочитаете использовать point.nom вместо point[:nom], тогда вы можете создать OpenStruct из каждого элемента Hash. То есть:

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

Я вижу, у вас есть name против nom в вашем примере, и я не уверен, намеренно это или нет. Если это так, вам нужно перевести все эти ключи самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...