可排序表无法按预期工作

问题描述 投票:0回答:1

试图遵循关于可排序表的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
html ruby-on-rails
1个回答
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})

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.