可排序表格未按预期工作

时间:2018-02-28 14:34:40

标签: html ruby-on-rails

尝试关注有关可排序表的Railscast,但遇到表的问题要么没有按预期排序,要么无法加载页面。

我似乎能够让它工作的唯一方法是将字符串硬编码到order函数中。我可以在url中传递查询,似乎没有采取任何操作。代码如下:

AdminController.rb

class AdminController < ActionController::Base
helper_method :sort_column, :sort_direction

def partners
  @partners = []
  DashboardPartner.order(params[:sort]).pluck(:partner_id).uniq.each do |id|
................

def sort_column
  DashboardPartner.column_names.include?(params[:sort]) ? params[:sort] : "name"
end

def sort_direction
  %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end

application.html.haml

%li= sortable 'name', 'Name'
%li= sortable 'day', 'Day'
%li= sortable 'month', 'Month'
%li= sortable 'year', 'Year'
%li= sortable 'alltime', 'Alltime'
/ %li= link_to "Name", sort: "name"
/ %li= link_to "Day", sort: "day"
/ %li= link_to "Month", sort: "month"
/ %li= link_to "Year", sort: "year"
/ %li= link_to "Alltime", sort: "alltime"

当我在这里使用sortable时,我得到一个错误“未定义的局部变量或方法`sort_column'”。当我使用link_to时,什么都没有按顺序排列。

application_helper.rb

def sortable(column, title = nil)
  title ||= column.titleize
  direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
  link_to title, {:sort => column, :direction => direction}
end

1 个答案:

答案 0 :(得分:0)

您的帮助方法中的问题以及sortable方法

上的这些行
direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"

link_to title, {:sort => column, :direction => direction}

它应该

direction = (column == sort_column && sort_direction == "asc") ? "desc" : "asc"
link_to title, {sort: column, direction: direction}

然后方法看起来像

def sortable(column, title = nil)
    title ||= column.titleize
    direction = (column == sort_column && sort_direction == "asc") ? "desc" : "asc"
    link_to title, {sort: column, direction: direction}
end

如果您需要使用此搜索页面,则需要通过添加request.query_parameters.merge来合并当前搜索结果,如下所示

link_to title, request.query_parameters.merge({sort: column, direction: direction})

希望有所帮助