Проблема, конечно, в том, что рубиновые символы не любят дефисы. Так что что-то вроде этого явно не сработает:
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
Я вроде как предпочитаю позднее, но оба кажутся немного мерзкими. Кто-нибудь знает способ лучше?