li类中的数据属性?

时间:2014-01-09 09:41:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 haml

我的模型中有这个代码:

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

2 个答案:

答案 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 }