ruby-on-rails - generators - rubyonrails
¿La mejor forma de usar los atributos de datos html5 con los rieles content_tag helper? (6)
¿Has intentado usar comillas con el símbolo? Algo como:
:"data-foo" => :bar
El problema, por supuesto, es que a los símbolos ruby no les gustan los guiones. Entonces algo como esto obviamente no funcionará:
content_tag(:div, "Some Text", :id => "foo", :data-data_attr => some_variable)
Una opción es usar una cadena en lugar de un símbolo:
content_tag(:div, "Some Text", :id => "foo", ''data-data_attr'' => some_variable)
O podría simplemente interpolar:
"<div id=''foo'' data-data_attr=''#{some_variable}''>Some Text</div>".html_safe
Prefiero más tarde, pero ambos parecen un poco asquerosos. Alguien sabe de una mejor manera?
JQuery Air (codeschool.com) Nivel 1, Ejemplo 1
Versión de Codeschool / plataforma independiente
<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>
Versión de 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>
Rails 3.1 se envía con ayudantes integrados:
http://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-tag
P.ej,
tag("div", :data => {:name => ''Stephen'', :city_state => %w(Chicago IL)})
# => <div data-name="Stephen" data-city-state="["Chicago","IL"]" />
Siempre puedes crear tu propia función de ayuda para poder escribir
<%= div_data_tag the_id, some_text, some_data %>
Sobre la base de las respuestas anteriores, esta es la forma canónica de hacerlo ahora:
content_tag(:div, "Some Text", id: "foo", data: { attr: some_variable })
content_tag(:div, "Some Text", id: "foo", data: { "other-attr" => some_variable })
Que genera:
<div id="foo" data-attr="some variable">Some Text</div>
<div id="foo" data-other-attr="some variable">Some Text</div>
Un ayudante no es una mala idea, pero parece un poco exagerado para lo que esencialmente soy yo quien se dedica a la sintaxis. Supongo que no hay nada integrado en los rieles, que es lo que estaba esperando. Voy a usar esto:
content_tag(:div, "Some Text", :id => "foo", ''data-data_attr'' => some_variable)