2013-11-03 17 views
3

我想突出显示Rails中的列标题,我按照以下教程创建了升序和降序排序列(http://railscasts.com/episodes/228-sortable-table-columns)。但是,我无法使higlightlight工作。Rails - 可排序和突出显示的列

这里是我已经被使用的代码:

为视图:

%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 *不突出。

感谢您的帮助!

+0

您是否收到任何错误?呈现的html看起来像什么?我会提出你的问题,因为我必须很快将这个添加到我的项目中,而且我没有看到你所做的事情有任何问题! –

+0

你也可以尝试使用[ransack](http://railscasts.com/episodes/370-ransack)这很简单。 –

+0

正如我添加的,排序工作得很好,但它不是在黄色突出显示。 关于Ransack,感谢您的建议,但我想学习从头开始。 – benatnet

回答

0

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

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

所以,你要么需要修理你的CSS或修复了你是把哪个元素的类。

0

Thansks链接,心动不如行动,有乳宁可分选助手之前测试分选:

%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 

感谢所有为你解答! Benjamin