2010-11-23 11 views
86

मुद्दा यह है कि रूबी प्रतीक हाइफ़न पसंद नहीं करते हैं। तो कुछ इस तरह स्पष्ट रूप से काम नहीं करेगा:रेल सामग्री content_tag सहायक के साथ html5 डेटा विशेषताओं का उपयोग करने का सबसे अच्छा तरीका?

content_tag(:div, "Some Text", :id => "foo", 'data-data_attr' => some_variable) 

या मैं बस को जोड़ सकता है::

"<div id='foo' data-data_attr='#{some_variable}'>Some Text</div>".html_safe 

मैं

content_tag(:div, "Some Text", :id => "foo", :data-data_attr => some_variable) 

एक विकल्प एक प्रतीक के बजाय एक स्ट्रिंग का उपयोग करने के लिए है सॉर्टा बाद में पसंद करते हैं लेकिन दोनों थोड़ा सकल लगते हैं। किसी को बेहतर तरीके से पता है?

उत्तर

128

रेल 3.1 जहाजों में निर्मित सहायकों:

http://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-tag

जैसे,

tag("div", :data => {:name => 'Stephen', :city_state => %w(Chicago IL)}) 
# => <div data-name="Stephen" data-city-state="[&quot;Chicago&quot;,&quot;IL&quot;]" /> 
+0

यह वास्तव में सिर्फ मेरे यूआरएल पर चीजें जोड़ता है। यह डेटा विशेषता नहीं जोड़ता है। –

+2

बेशक यह करता है .... लेकिन यदि आप एक सहायक का उपयोग कर रहे हैं जो एक यूआरएल हैश और एक एचटीएमएल विकल्प हैश लेता है तो आपको स्पष्ट रूप से दोनों हैंश को घुंघराले ब्रैकेट {} में लपेटना होगा। link_to उदाहरण के लिए: link_to "लेबल", {: action => blub}, {: data => {: foo =>: bar},: class => "test"} – reto

+0

यह काम करता है: 'डेटा-बीवी-नोटिमी -मेसेज '=> "उपयोगकर्ता नाम आवश्यक है" – Ivan

57

क्या आपने प्रतीक के साथ उद्धरणों का उपयोग करने का प्रयास किया है? कुछ की तरह:

:"data-foo" => :bar 
+1

सर्वश्रेष्ठ उत्तर यहीं! – imjp

+1

इस आदमी को स्वीकृति दें। – JellicleCat

+3

मुझे ओपीएस के दूसरे सुझाव में अंतर नहीं दिख रहा है ... – reto

-3

तुम हमेशा आप स्वयं सहायक समारोह ऐसा है तो बना सकते हैं आप

<%= div_data_tag the_id, some_text, some_data %> 
9

लिख सकते हैं एक सहायक एक बुरा विचार नहीं है, लेकिन क्या बारे में fusy अनिवार्य रूप से मुझे किया जा रहा है के लिए एक overkill का एक सा लगता है वाक्य - विन्यास। मुझे लगता है कि रेलों में कुछ भी नहीं बनाया गया है जो मैं उम्मीद कर रहा था। मैं तो बस इस का उपयोग करेंगे: साथ

content_tag(:div, "Some Text", :id => "foo", 'data-data_attr' => some_variable) 
5

JQuery एयर (codeschool.com) स्तर 1 , उदाहरण 1

कोडस्कूल/प्लेटफ़ॉर्म-स्वतंत्र संस्करण

<section id="tabs"> 
    <ul> 
    <li><a href="#2012-09-27" data-flights="6">Sep 27</a></li> 
    <li><a href="#2012-09-28" data-flights="5">Sep 28</a></li> 
    <li><a href="#2012-09-29" data-flights="5">Sep 29</a></li> 
    </ul> 
</section> 

रेल संस्करण

<section id="tabs"> 
    <ul> 
    <li><%= content_tag(:a, "Sep 27",:href=> "#2012-09-27", :data => { :flights => "6" }) %></li> 
    <li><%= content_tag(:a, "Sep 28",:href=> "#2012-09-28", :data => { :flights => "5" }) %></li> 
    <li><%= content_tag(:a, "Sep 29",:href=> "#2012-09-29", :data => { :flights => "5" }) %></li> 
    </ul> 
</section> 
1

बिल्डिंग पिछले उत्तरों के लिए, यहाँ अब यह करने के लिए विहित तरीका है:

content_tag(:div, "Some Text", id: "foo", data: { attr: some_variable }) 
content_tag(:div, "Some Text", id: "foo", data: { "other-attr" => some_variable }) 

कौन उत्पन्न करता है:

<div id="foo" data-attr="some variable">Some Text</div> 
<div id="foo" data-other-attr="some variable">Some Text</div> 
संबंधित मुद्दे

 संबंधित मुद्दे