Tin*_*n81 12 ruby activerecord ruby-on-rails
在我的Rails 4应用程序中,我有这样的设置:
class InvoicesController < ApplicationController
def index
@invoices = current_user.invoices.search(params)
end
...
end
Run Code Online (Sandbox Code Playgroud)
class Invoice < ActiveRecord::Base
belongs_to :user
def self.search(params)
data = all
data = data.where("number LIKE ?", "%#{params[:number]}%") if params[:number]
data = data.where("total > ?", params[:minimum]) if params[:minimum]
data = data.where("total < ?", params[:maximum]) if params[:maximum]
data
end
...
end
Run Code Online (Sandbox Code Playgroud)
问题是我有一堆其他GET参数,它们都是params哈希的一部分.如何从URL中删除空白参数,以便我不会得到以下URL:
/invoices?after=&before=&maximum=&minimum=&number=
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
saw*_*awa 34
哈希之后放这个:
.reject{|_, v| v.blank?}
Run Code Online (Sandbox Code Playgroud)
Mar*_*n13 13
Rails 6.1 添加compact和compact!以从散列中ActionController::Parameters删除nil值params。
params.compact
params.compact!
Run Code Online (Sandbox Code Playgroud)
Rails 6.1 添加compact_blank和compact_blank!以从散列中ActionController::Parameters删除blank值params。
params.compact_blank
params.compact_blank!
Run Code Online (Sandbox Code Playgroud)
nil, '', ' ', [], {}, false
Run Code Online (Sandbox Code Playgroud)