2

在 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

我希望根据另一个助手的输出对我的 Booking 进行升序或降序排序:

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)

我得到一个“未定义的方法'+' for ...”错误

如何替换 sort_direction 的结果以确定 Booking 是按 asc 还是 desc 排序的?

谢谢

4

1 回答 1

3
Booking.all(order: sort_column.send(sort_direction))
于 2013-02-13T16:27:05.030 回答