В Ruby (или Rails) мы можем сделать
new_params = params.merge({:order => 'asc'})
и теперь new_params
- это хеш с добавленным ключом :order
.
Но есть ли строка, в которой можно вернуть хэш с удаленным ключом? Линия
new_params = params.delete(:order)
не будет работать, потому что метод delete
возвращает значение и все. Должны ли мы сделать это в 3 шага?
tmp_params = params
tmp_params.delete(:order)
return tmp_params
Есть ли лучший способ? Потому что я хочу сделать
new_params = (params[:order].blank? || params[:order] == 'desc') ?
params.merge({:order => 'asc') :
(foo = params; foo.delete(:order); foo) # return foo
но последняя строка выше несколько неуклюжа. Есть ли лучший способ сделать это?
(примечание: поскольку порядок по умолчанию - «desc», поэтому, когда нет параметра order
, это означает, что он является значением по умолчанию и равен desc
, затем переключите его, чтобы добавить order=asc
, но в противном случае просто удалите параметр order
, чтобы он вернулся к порядку по умолчанию desc
)