首页 > 解决方案 > sinatra 或 Rails 应用程序:简化结果分类

问题描述

我有一个 Sinatra 应用程序,但我想这个问题在 RoR 中也是有效的。date在应用程序中,用户可以按amount或的顺序查看他的支出name

我是控制器,我有 3get条路线对应于那些可能的订单(默认是每个日期)。

这意味着,例如当用户选择“per amount”时,请求将被发送到服务器,然后通过相应的 sql 查询发送到数据库。虽然它有效,但我想知道这是否是最有效的方法。

标签: sinatra

解决方案


使用params哈希使您更易于维护。

get '/spendings' do 
  @spendings = Spending.where(user_id: current_user.id)

  # Make date the default sort
  sort = 'date'
  sort = params[:sort] if params[:sort].in?(['amount', 'name'])

  @spendings = @spendings.order(sort)
end

您必须使用的网址类似于

example.com/spendings?sort=date
example.com/spendings?sort=amount
example.com/spendings?sort=name

推荐阅读