我有一个电影列表应用程序,可以在其中添加电影列表。在列表显示页面上,该页面显示该列表中的电影,我想要一个按钮,用于按标题对列表中的电影进行排序。我目前遇到路由错误-没有路由匹配[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
我在list_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' %>
我在控制器上做错了吗?
答案 0 :(得分:1)
button_to
发送一个POST
请求。可能您应该使用link_to
或在method: :get
button_to
<%= button_to "Sort By Title", list_path(@list, sort_by: "title"), method: :get, class: 'btn btn-secondary btn-sm btn-space' %>
OR
<%= link_to "Sort By Title", list_path(@list, sort_by: "title"), class: 'btn btn-secondary btn-sm btn-space' %>