次のように、「p=1」クエリパラメータがURLの最後に表示される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
潜在的な解決策は、ハッシュを反復する方法に対処する必要があるようです。