我想生成一个 URL,其中“p = 1”查询参数出现在 URL 的末尾,例如:
/path?foo=X&bar=Y&p=1
是否可以通过以下方式生成 URL 时控制查询参数的顺序:
url_for(params.merge({ p: page_num }))
?
更新:
我在下面尝试了 ChuckE 的 建议。事实证明,在 Ruby 1.9 中,哈希已经排序,因此其中的代码ActiveSupport::OrderedHash
实际上是无操作的。您可以使用 Ruby 1.9 验证是否保留了订单:
>> h = {one: 1, two: 2, three: 3 }
{:one=>1, :two=>2, :three=>3}
>> f = h.except(:one)
{:two=>2, :three=>3}
>> f[:one] = 1
1
>> f
{:two=>2, :three=>3, :one=>1}
但是,url_for
仍然将“p”参数放在首位。似乎任何潜在的解决方案都需要解决如何url_for
迭代哈希。