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

时间:2018-10-05 16:36:58

标签: ruby-on-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

我在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' %>

我在控制器上做错了吗?

1 个答案:

答案 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' %>