【问题标题】:sinatra or Rails app: simplify classification of resultssinatra 或 Rails 应用程序:简化结果分类
【发布时间】:2021-02-19 22:55:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: sinatra


    【解决方案1】:

    使用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
    

    【讨论】:

    • 感谢 Eyeslandic。这确实清除了代码。但是,这仍然会将请求发送回数据库。我正在寻找一种将结果存储在哈希服务器端或 javascript 中并根据请求重新排序的方法,而不是每次都将请求发送到数据库。
    • 将它存储在哈希服务器端并不能为您节省太多,您可以考虑使用一些包含排序的 javascript 数据表,或者使用 js 前端框架,vuejs 可以很容易地包含在一个您网站的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2017-03-25
    相关资源
    最近更新 更多