在 Rails 问题中按标题按钮排序



我有一个电影列表应用程序,我可以在其中添加电影列表。在列表显示页面上,它显示该列表中的电影,我想要一个按钮,按标题对列表中的电影进行排序。我目前收到路由错误 - 没有路由匹配 [POST] "/lists/7"。我不确定我哪里出错了。

我的电影模型:

class Movie < ApplicationRecord
has_many :list_movies
has_many :lists, through: :list_movies
def self.order_list(sort_order)
if sort_order == 'title' || sort_order.blank?
order(title: :asc)
elsif sort_order == 'rating'
order(rating: :asc)
else
order(created_at: :asc)
end
end
end

我的控制器操作lists_controller:

def show
@list_movies = @list.movies
@list_movies.order_list(params[:sort_by])
end

我在列表显示页面上的按钮:

<%= button_to "Sort By Title", list_path(@list, sort_by: "title"), class: 'btn btn-secondary btn-sm btn-space' %>

我是否对控制器做错了什么?

button_to发送POST请求。可能你应该使用link_to或在button_to中使用method: :get

<%= button_to "Sort By Title", list_path(@list, sort_by: "title"), method: :get, class: 'btn btn-secondary btn-sm btn-space' %>

<%= link_to "Sort By Title", list_path(@list, sort_by: "title"), class: 'btn btn-secondary btn-sm btn-space' %>

最新更新