Best way to use html5 data attributes with rails content_tag helper?

前端 未结 6 709
清酒与你
清酒与你 2020-12-02 09:48

The issue, of course, is that ruby symbols don\'t like hyphens. So something like this obviously won\'t work:

content_tag(:div, \"Some Text\", :id => \"fo         


        
相关标签:
6条回答
  • 2020-12-02 09:59

    JQuery Air (codeschool.com) Level 1, Example 1

    Codeschool/platform-independent version

    <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 Version

    <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>
    
    0 讨论(0)
  • 2020-12-02 10:02

    Have you tried using quotes with symbol? Something like:

    :"data-foo" => :bar
    
    0 讨论(0)
  • 2020-12-02 10:02

    Building on previous answers, here's the canonical way to do it now:

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

    Which generates:

    <div id="foo" data-attr="some variable">Some Text</div>
    <div id="foo" data-other-attr="some variable">Some Text</div>
    
    0 讨论(0)
  • 2020-12-02 10:07

    Rails 3.1 ships with built-in helpers:

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

    E.g.,

    tag("div", :data => {:name => 'Stephen', :city_state => %w(Chicago IL)})
    # => <div data-name="Stephen" data-city-state="[&quot;Chicago&quot;,&quot;IL&quot;]" />
    
    0 讨论(0)
  • 2020-12-02 10:16

    A helper's not a bad idea but seems a bit of an overkill for what's essentially me being fusy about syntax. I suppose there's nothing built into rails which is what I was hoping for. I'll just use this:

    content_tag(:div, "Some Text", :id => "foo", 'data-data_attr' => some_variable)
    
    0 讨论(0)
  • 2020-12-02 10:21

    You can always create you own helper function so then you can write

    <%= div_data_tag the_id, some_text, some_data %>
    
    0 讨论(0)
提交回复
热议问题