2010-05-18 4 views
0

J'ai deux tableaux de données envoyés à partir d'un formulaire, l'un appelé transbordé et l'autre vidéo qui est le formulaire réel pour le modèle. Je dois obtenir [: video_encoded] [: url] et enregistrer cela à [: video] [: flash_url]Fusion de paramètres passés

Ceci est les arguments passés ou transbordés, lorsque j'essaie d'accéder [: transload] [: results] [ : video_encode] Je reçois zéro.

print params[:transload] 
    { 
    "assembly_id":"d59b4293b3d79d2ccd1948c02421c6a6", 
    "status":"success", 
    "uploads":{ 
     "video":{ 
      "name":"bbc_one.mp4", 
      "mime":"video/mp4", 
      "ext":"mp4", 
      "size":601104, 
      "meta":{ 
       "width":720, 
       "height":404, 
       "video_fps":25, 
       "video_bitrate":null, 
       "video_format":"avc1", 
       "video_codec":"ffh264", 
       "audio_bitrate":"128k", 
       "audio_codec":"faad", 
       "duration":3.07, 
       "device_vendor":null, 
       "device_name":null, 
       "device_software":null, 
       "latitude":null, 
       "longitude":null 
      }, 
      "url":"http://tmp.transloadit.com/" 
     } 
    }, 
    "results":{ 
     "video_encode":{ 
      "name":"bbc_one.flv", 
      "mime":"video/x-flv", 
      "steps":["encode","export"], 
      "ext":"flv", 
      "size":388317, 
      "meta":{ 
       "width":480, 
       "height":320, 
       "video_fps":25, 
       "video_bitrate":"512k", 
       "video_format":"FLV1", 
       "video_codec":"ffflv", 
       "audio_bitrate":"64k", 
       "audio_codec":"mp3", 
       "duration":3.11, 
       "device_vendor":null, 
       "device_name":null, 
       "device_software":null, 
       "latitude":null, 
       "longitude":null 
      }, 
      "url":"http://s3.transloadit.com/b7deac9c96af6c745e914e25d0350baa/7a/2b09e822265ac2328789b40dcc02ae/bbc_one.flv" 
     }, 
     "video_encode_iphone":{ 
      "name":"bbc_one.qt", 
      "mime":"video/quicktime", 
      "steps":["encode_iphone","export"], 
      "ext":"qt", 
      "size":218236, 
      "meta":{ 
       "width":480, 
       "height":320, 
       "video_fps":25, 
       "video_bitrate":null, 
       "video_format":"avc1", 
       "video_codec":"ffh264", 
       "audio_bitrate":"128k", 
       "audio_codec":"faad", 
       "duration":3.04, 
       "device_vendor":null, 
       "device_name":null, 
       "device_software":null, 
       "latitude":null, 
       "longitude":null 
      }, 
      "url":"http://s3.transloadit.com/31/58bcc80d5345e52a42c9773125e8f0/bbc_one.qt" 
     } 
    } 
} 

Voici ce que je suis en train d'utiliser

video_links = { 
    :flash_url => params[:transload][:results][:video_encode][:url], 
    :mp4_url => params[:transload][:results][:video_encode_iphone][:url] 
} 
params[:video].merge(video_links) 

Répondre

1

Le problème est simple: :results != "results" ou autrement dit: votre hachage a des touches de type String mais vous y accéder avec le type Symbol.

+0

Je pense que c'est parce que les résultats sont JSON, que je ne savais pas. params [: transbordement] = ActiveSupport :: JSON.decode (params [: transbordement]) Cela a résolu –

+0

Vous devriez accepter des réponses qui vous ont aidé. – nathanvda

+0

Merci nathanvda, im nouveau à stackoverflow :) –

Questions connexes