我正在制作一个用于评论电影的Ruby应用程序。在我的电影索引视图中,我有一个下拉菜单,它将选择要排序的类别的名称,电影控制器包含以下代码,仅显示该类型的电影:
@category_id = Category.find_by(name: params[:category]).id
@movies = Movie.where(:category_id => @category_id).("created_at DESC")
电影属于数据库中的某个类别。
由于某种原因,我收到以下错误:
MoviesController中的NoMethodError #index
未定义的方法`call'为#你的意思?呼叫者
每当我尝试对电影进行排序时。这是在上面代码的第二行引发的。这在我清理我的数据库之前有效(类别仍然完好无损),所以它可能与它有关。
答案 0 :(得分:4)
我认为错误是.("created_at DESC")
,我想你想要:order(created_at: :desc)
答案 1 :(得分:1)
JP Silvashy所说的话。
另外,你可以这样做:
@category = Category.find_by(name: params[:category])
@movies = Movie.where(category: @category).order(created_at: :desc)
这假定为Movie belongs_to :category
。
或者你可以这么做(除非你打算在其他地方使用@category
):
@movies = Movie.where(category: Category.find_by(name: params[:category])).order(created_at: :desc)