MoviesRtroller中的Ruby Rails NoMethodError使用SQL进行排序的索引

时间:2018-04-17 18:09:37

标签: ruby-on-rails ruby

我正在制作一个用于评论电影的Ruby应用程序。在我的电影索引视图中,我有一个下拉菜单,它将选择要排序的类别的名称,电影控制器包含以下代码,仅显示该类型的电影:

@category_id = Category.find_by(name: params[:category]).id
@movies = Movie.where(:category_id => @category_id).("created_at DESC")

电影属于数据库中的某个类别。

由于某种原因,我收到以下错误:

  

MoviesController中的NoMethodError #index

     

未定义的方法`call'为#你的意思?呼叫者

每当我尝试对电影进行排序时。这是在上面代码的第二行引发的。这在我清理我的数据库之前有效(类别仍然完好无损),所以它可能与它有关。

2 个答案:

答案 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)