我的模型中有这个代码:
def features_to_html_class
"mix #{bedrooms} #{region.name} #{categories.map{|cat|cat.name}.join(' ')}"
end
在我看来这个
- @regions.each do |region|
- @houses.where(region_id: region.id).each do |house|
%li{:class => house.features_to_html_class }
HTML输出是这样的:
<li class='mix 3 umbria price_range-1 villa_with_pool '>
这项工作正常但现在我想将数据属性“data-sort”和“data-order”添加到li类。所以我有这个HTML输出
<li class="mix 3 umbria price_range-1 villa_with_pool" data-sort="data-name" data-order="desc">
我如何更改features_to_html_class方法以实现此目的?
...谢谢REMCO
答案 0 :(得分:0)
这应该有效:
%li{class: house.features_to_html_class, data: {sort: 'data-name', order: 'desc'}}
<强>更新强>
由于您的数据值是动态的,因此您可以更改方法以提供整个属性哈希:
def features_to_html_attributes
{
class: "mix #{bedrooms} #{region.name} #{categories.map{|cat|cat.name}.join(' ')}",
data: {sort: 'data-name', order: 'desc'}
}
end
通过以下方式分配:
%li{features_to_html_attributes}
答案 1 :(得分:0)
要在Haml中添加新属性,您只需将它们作为哈希传递('attribute_name'=&gt;'value')
以下应该
- @regions.each do |region|
- @houses.where(region_id: region.id).each do |house|
%li{:class => house.features_to_html_class, "data-sort" => "data-name", "data-order" => "desc"}
编辑:
为什么您在方法'features_to_html_class'中的更改无法在视图中使用,因为 你已经直接写了类属性(附加在li元素类中的值)
%li{:class => house.features_to_html_class }