ruby-on-rails
  • html5
  • 2010-11-23 101 views 86 likes 
    86

    もちろん、問題はルビ記号がハイフンを好まないということです。したがって、このような何かは明らかに動作しません。rails content_tag helperで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 
    

    Iを

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

    一つのオプションは、シンボルではなく、文字列を使用することですソルジャーは後で好きですが、どちらも少し面白そうです。誰でも良い方法を知っていますか?

    答えて

    128

    のRails 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

    これは実際には自分のURLに物事を追加するだけです。データ属性は追加されません。 –

    +2

    もちろんです....しかし、あなたがurlハッシュとhtmlオプションの両方のハッシュを取るヘルパーを使用している場合は、ハッシュを中括弧{}で明示的に囲む必要があります。例えば、link_to "label"、{:action => blub}、{:data => {:foo =>:bar}、:class => "test"} – reto

    +0

    これは動作します: 'data-bv-notempty -message '=> "ユーザー名は必須です" – Ivan

    57

    シンボルで引用符を使用してみましたか?何かのように:あなたは常にあなた自身のヘルパー関数を作成することができます

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

    ベストの答えを右ここに! – imjp

    +1

    この男に受け入れてください。 – JellicleCat

    +3

    私はOPの2番目の提案との違いを見ません... – reto

    -3

    ので、あなたは

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

    ヘルパー悪い考えではありませんが、基本的に私はおよそfusyされているもののためにやり過ぎのビットを思わを書くことができます構文。私は、私が望んでいたレールに何も組み込まれていないと思います。私はこれを使用します:

    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> 
    

    Railsのバージョン以前の回答に

    <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> 
    
    関連する問題