导轨 - 可排序和突出显示的列

时间:2013-11-03 22:50:22

标签: ruby-on-rails sorting

我正在尝试在Rails中突出显示列标题,我按照以下教程创建了升序和降序排序列(http://railscasts.com/episodes/228-sortable-table-columns)。但是我不能让高亮度工作。

以下是我一直在使用的代码:

视图

%table#movies<br/>
 %thead<br/>
  %tr<br/>
      %th{:id => 'title_header'}= sortable "title", "Movie Title"<br/>
      %th Rating<br/>
      %th= sortable "release_date", "Release Date"<br/>
      %th More Info<br/>

应用程序助手:

module ApplicationHelper
 def sortable(column, title = nil)
    title ||= column.titleize
    css_class = column == sort_column ? "hilite" : nil      
    direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
    link_to title, {:sort => column, :direction => direction}, {:class => css_class}
 end
end

控制器:

def index
  @movies = Movie.order(sort_column + " " + sort_direction)
end
     

def sort_column
  Movie.column_names.include?(params[:sort]) ? params[:sort] : "title"
end

def sort_direction
  %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
 end

和样式表:

table#movies th.hilite {
  background-color: yellow;
}

我找不到什么错误,但是当我点击标题时它只是排序而不是以黄色突出显示...怀疑它与* css_class *有关。

感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

我相信这是因为类hilite不在表头(<th>)元素上,而是在锚(<a>)元素上。因此,为了匹配元素,CSS需要是:

table#movies th a.hilite {
  background-color: yellow;
}

因此,您需要修复CSS或修复您正在使用哪个元素。

答案 1 :(得分:0)

Thansks Link,得到它,必须在运行可排序助手之前测试排序:

%table#movies
    %thead
      %tr
        %th{params[:sort] == "title" ? {:class => "hilite"} : {}, :id => "title_header"}= sortable "title", "Movie Title"
        %th Rating
        %th{params[:sort] == "release_date" ? {:class => "hilite"} : {}, :id => 'release_date_header'}= sortable "release_date", "Release Date"
        %th More Info

谢谢大家的回答! 本杰明