2013-03-05 11 views
14

Son zamanlarda, raylar uygulamasındaki HTML özel veri öznitelikleriyle ilgili sorunlarla karşılaşıyorum. Ben html etiketlerinin atfettiği bazı veri eklemek ve benim javascript üstü (jQuery) bunları kod kullanmak için aşağıdaki desen kullanıcı:raylar ve html veri özellikleri: tire (-) veya alt çizgi (_) kullanın?

alert($(".name").data("first_name") + " " + $(".name").data("last_name")); 
: Ben bu özellikleri

= %a.name{ href: "url.com", data: {first_name: "ben", last_name: "amsalem} } 

javascript kodunda erişmek

Geliştirme ortamımda iyi gidiyor ve beklenen sonucu elde ediyorum (geçmişte üretim ortamım için de aynısı geçerli), ancak mevcut üretim sürümümde "tanımsız" değerler alıyorum. Ben sayfanın HTML kaynağını kontrol ettim ve şimdi böyle bir şey olduğunu gördük:

<a class="name" href="url.com" data-first-name="ben" data-last-name="amsalem" /> 

yerine:

<a class="name" href="url.com" data-first_name="ben" data-last_name="amsalem" /> 

Neden olur? Değişime neden olan nedir?

+0

Simdi neyin daha dogru olduguna ve ona erismeye benziyorsa, '.data (" lastName ") 'e ihtiyaciniz var' Raylari güncellediniz mi? Bu değişimi açıklayabilir. –

+0

http://stackoverflow.com/questions/8734722/rails-link-to-helper-with-data-attribute – MrYoshiji

+0

Nitelik adlarında alt çizgi kullanmamak en iyisidir. MVC'de, Html Yardımcılarının alt çizgi çizgilerini dönüştüreceğini kesin olarak biliyorum. sadece 'data-firstname '' i kullanabilmek için easiler ' – musefan

cevap

0

: gelişiminde ben sürümünde 3.2.9 taşlar varmış gibi görünüyor ve üretimde o 3.2.12 oldu - yanlış Bu sürümler arasında (<a date-last_name/> dönüşümü) davranış düzeltildi ve geliştirme sürümümü yükselttikten sonra değişikliği görebiliyorum.

12

data: { first_name: "ben" } ürününün data-first-name="ben" ürününün üretimi normaldir.

Bu özniteliğe erişmenin en iyi yolu .data("firstName"), ancak .data("first-name") da çalışır.

+0

Katılıyorum, doğru ve normal. Ancak önceki sürümlerde data-first_name idi, bu yüzden JavaScript kodum data ("first_name"). Bu değişikliği ne yaptı? – benams

+0

Bildiğim kadarıyla, bu sözdizimi 'datalar {first_name:" "}}' i kullanırken, raylar hiçbir zaman 'data-first_name 'oluşturdu, fakat yanılıyor olabilirim. Belki de dize sürümünü kullanıyordunuz, örneğin: data: {"first_name" => "ben"} '. Eğer değilse, hiçbir fikrim yok. – Robin

+0

nope, tekrar kontrol ettim ve string versiyonunu değil sembol versiyonunu kullanıyorum. Bu bir tür garip, çünkü eski sürümümde çalıştığından% 100 eminim ve hala geliştirme ortamında çalışıyor. – benams

4

HAML kullandığınızı kabul ediyorum. Hipernasyon 4.0'dan beri varsayılan olarak geliyor. Bunu kapatmak için hyphenate_data_attrs değerini false olarak ayarlayın.

Dokümantasyon: http://haml.info/docs/yardoc/Haml/Options.html#hyphenate_data_attrs-instance_method

Orijinal github çekme tartışması: benim yaptığım testlerden sonra https://github.com/haml/haml/pull/488

+0

Ancak, raylar ilk veri ismi oluşturduğundan, ilk bakışta altlık olmamalı, değil mi? – Robin

+0

@Robin alt çizgileri otomatik olarak tire ile değiştirilmemişti. V.4.0: https://github.com/haml/haml/issues/478 – darshanags

+0

Benim hatam, raylar sözdizimine çok alışkınım. Aslında bir ray yardımcısı değil, haml kullanıyordu. Evet, haklısın ve bence bu kabul edilen cevap olmalı. – Robin

İlgili konular