问题当然是红宝石符号不喜欢连字符。所以这样的事情显然不会起作用:
content_tag(:div, "Some Text", :id => "foo", :data-data_attr => some_variable)
一种选择是使用字符串而不是符号:
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
我更喜欢后者,但两者看起来都有点粗糙。有人知道更好的方法吗?
答案 0 :(得分:134)
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="["Chicago","IL"]" />
答案 1 :(得分:63)
您是否尝试过使用带符号的引号?类似的东西:
:"data-foo" => :bar
答案 2 :(得分:9)
帮助者并不是一个坏主意,但对于基本上我对语法很有帮助的东西来说似乎有些过分。我想铁轨中没有任何东西是我所希望的。我会用这个:
content_tag(:div, "Some Text", :id => "foo", 'data-data_attr' => some_variable)
答案 3 :(得分:6)
JQuery Air(codeschool.com)1级,示例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版本
<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>
答案 4 :(得分:2)
以前的答案为基础,这是现在这样做的规范方法:
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>
答案 5 :(得分:-3)
您可以随时创建自己的帮助函数,然后编写
<%= div_data_tag the_id, some_text, some_data %>