简单的Sinatra / Ruby替换

时间:2013-02-13 16:24:27

标签: ruby sinatra

在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)

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

如何在sort_direction的结果中替换以确定是否订购了预订asc或desc?

由于

1 个答案:

答案 0 :(得分:3)

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