在sinatra中,我有一个简单的助手来返回一个符号:

def sort_column
  params[:sort] ? params[:sort].to_sym : :client_id
end

我的订票人是:
get '/bookings' do
  @bookings = Booking.all(order: sort_column)
  erb :bookings
end

我希望根据另一个助手的输出将我的预订定为ASC或DESC:
def sort_direction
  params[:direction] || "asc"
end

这是:
@bookings = Booking.all(order: sort_column.asc)

而这:
@bookings = Booking.all(order: sort_column.desc)

两个都很好。
但如果我使用:
@bookings = Booking.all(order: sort_column.sort_direction)

我得到一个私有方法错误,如果我试图:
@bookings = Booking.all(order: sort_column + "." + sort_direction)

我得到一个“未定义的方法”+“用于…”错误
如何在sort_方向的结果中替换以确定预订是asc还是desc?
谢谢

最佳答案

Booking.all(order: sort_column.send(sort_direction))

10-01 07:13