Ruby on Railsで、ransackの
sort_link
ヘルパーを使うと、?q%5Bs%5D=name+asc
のようなURLのアンカーを作成してくれる。この時、同時にkaminariでページネーションをしていると、sort_linkはparamsを自動的にマージするので、
?page=2&q%5Bs%5D=name+asc
のようなURLになる。sort_link :id, page: nil
のようにpageパラメータをnilで上書きしてあげると、作成されたURLのクエリにpageは設定されなくなる。なお、
sort_link :id, params: { page: nil }
では pageは上書きされない。sort_link :id, params: { page: 1 }
と書くとURLのクエリにpageが2つ設定される。ransackのソースコードを見ると、paramsとsort_linkに指定したオプションをマージして直接
url_for
に設定している。def url_options @params.merge( @options.merge( @search.context.search_key => search_and_sort_params)) end
send(routing_proxy).url_for(options_for_url)