【发布时间】:2015-09-23 17:44:43
【问题描述】:
这是movies.controller.rb文件中的索引函数。
def index
@movies = Movie.find(:all, :order => (params[:sort_by]))
@sort_column = params[:sort_by]
end
这是视图文件。 -# 这个文件是app/views/movies/index.html.haml %h1 所有电影
%table#movies
%thead
%tr
%th{:class=>("hilite" if @sort_column == "title")}= link_to 'Movie Title', movies_path(:sort_by=>'title'), :id=>"title_header"
%th Rating
%th{:class=>("hilite" if @sort_column == "release_date")}= link_to 'Release Date', movies_path(:sort_by=>'release_date'), :id=>"release_date_header"
%th More Info
%tbody
- @movies.each do |movie|
%tr
%td= movie.title
%td= movie.rating
%td= movie.release_date
%td= link_to "More about #{movie.title}", movie_path(movie)
= link_to 'Add new movie', new_movie_path
default.css
table#movies th.hilite {
background-color: yellow;
}
它在索引的第一行给了我以下错误:
Couldn't find all Movies with 'id': (all, {:order=>nil})
我需要按标题和发行日期对电影列表进行排序,并将其突出显示为黄色。但是,使用此代码,它既不会突出显示,也不会排序。错误在哪里?
【问题讨论】:
-
由于您期望排序参数,您能否包括参数是什么?
-
电影列表显示出来了吗?测试时 params[:sort_by] 的值是多少?如果硬编码 params[:sort_by] 的值会发生什么?
-
@ruby_newbie :在索引文件中。 :sort_by = 'title' 和 :sort_by = 'release_date'
-
@philosodad :是的,电影列表正在显示,“标题”和“发行日期”是链接,但单击它们时,它们的背景不会变黄。此外,它们没有得到排序。
标签: ruby-on-rails