尝试关注有关可排序表的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
答案 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})
希望有所帮助