3

我试图在 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 * 有关。

谢谢你的帮助!!

4

2 回答 2

0

谢谢 Link,明白了,必须在运行 sortable 助手之前测试排序:

%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

谢谢大家的回答!本杰明

于 2013-11-06T01:01:53.807 回答
0

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

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

因此,您要么需要修复 CSS,要么修复要放置类的元素。

于 2013-11-04T19:53:54.087 回答