2

シナトラでは、シンボルを返すための簡単なヘルパーがあります。

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_directionの結果を置き換えて、予約がascまたはdescのどちらで注文されているかを判断するにはどうすればよいですか?

ありがとう

4

1 に答える 1

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