2016-06-09 2 views
0

У меня есть эта куча коды здесь:рельсов игнорирований добавить в массив

doc.xpath("//script[@type='text/javascript']/text()").each do |text| 
     if text.content =~ /more_options_on_polling/ 
     price1 = text.to_s.scan(/\"(formatted_total_price)\":\"(.+?)\"/).uniq 
     description = text.to_s.scan(/\"(ticket_desc)\":\"(.+?)\"/).uniq 
     price = price1 + description 
     testing = price1.map{|a| { a[0] => a[1] } } 
     desc = description.map{|a| { a[0] => a[1] } } 
     respond_to do |format| 
      format.json { render :json => {:testing => testing, 
              :desc => desc }} 
     end 
     end 

Теперь в ДЕСКЕ, возвращает это:

"desc": [ 
    { 
     "ticket_desc": "Later Owl Ticket" 
    }, 
    { 
     "ticket_desc": "Later Owl Ticket+Collector Ticket &#64 extra £4.95 per ticket" 
    }, 
    { 
     "ticket_desc": "Later Owl + Chance For VIP Upgrade" 
    }, 
    { 
     "ticket_desc": "VIP Ticket" 
    }, 
    { 
     "ticket_desc": "VIP Ticket + Collector Ticket &#64 extra £4.95 per ticket" 
    }, 
    { 
     "ticket_desc": "Skydeck Package" 
    }, 
    { 
     "ticket_desc": "5 Person Skydeck Table" 
    }, 
    { 
     "ticket_desc": "7 Person Skydeck Table" 
    }, 
    { 
     "ticket_desc": "10 Person Skydeck Table" 
    } 
    ] 

Что им хотят что-нибудь с символом + внутри, чтобы игнорировать. поэтому в идеале ответ будет таким:

"desc": [ 
    { 
     "ticket_desc": "Later Owl Ticket" 
    }, 
    { 
     "ticket_desc": "VIP Ticket" 
    }, 
    { 
     "ticket_desc": "Skydeck Package" 
    }, 
    { 
     "ticket_desc": "5 Person Skydeck Table" 
    }, 
    { 
     "ticket_desc": "7 Person Skydeck Table" 
    }, 
    { 
     "ticket_desc": "10 Person Skydeck Table" 
    } 
    ] 

Я в настоящее время делает это с рельсами, но я renderign его в поле зрения с помощью JavaScript/Ajax, поэтому если у вас есть какие-либо идеи, что я могу сделать там пусть я знаю :)

Heres Аякса:

for (var i = 0; i < json.testing.length; i++) { 
    var section = json.testing[i].formatted_total_price; 
    var desc = json.desc[i].ticket_desc; 

ответ

0

Ну, один из вариантов является использование выбора на desc хэш. Например, после строки, которая начинается с desc = вы могли бы добавить:

desc.select! { |a| !a['ticket_desc'].include?("+") } 

Если вы хотите сохранить оригинальный DESC, используйте неразрушающие выбрать и поместить результаты в новую переменную:

desc_wo_plus = desc.select { |a| !a['ticket_desc'].include?("+") } 
+0

Эй, там! Я получаю 'NoMethodError (неопределенный метод' include? 'Для nil: NilClass): 'было бы это потому, что я положил его внутри каждого –

+0

Извините, я думал, что ваши данные были хешем, но на самом деле массив хэшей. Я обновил свой ответ. – apod

+0

Спасибо! Это сработало в первый раз! –

Смежные вопросы