Estou dificilmente adicionando parâmetros de string de consulta ao link_to UrlHelper. Eu tenho uma exibição de índice, por exemplo, que possui elementos de interface do usuário para classificação, filtragem e paginação (via will_paginate). O plugin will_paginate gerencia a persistência intra-página dos parâmetros da string de consulta corretamente.
Existe um mecanismo automático para adicionar os parâmetros da string de consulta a uma rota nomeada, ou preciso fazer isso manualmente? Muita pesquisa sobre essa construção aparentemente simples me deixou sem noção.
Editar
Alguns dos desafios:
Se eu tiver dois parâmetros de string de consulta, bucket e classificação, como definir um valor específico para um desses em um link_to, preservando o valor atual do outro? Por exemplo:
<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
Se eu tiver vários parâmetros de string de consulta, bucket & sorting & page_size, e desejar definir o valor como um deles, existe uma maneira de incluir automaticamente os nomes e valores dos parâmetros restantes? Por exemplo:
<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
O plugin will_paginate gerencia sua variável de página e outras variáveis de query query automaticamente. Não parece haver um elemento de interface do usuário automático para gerenciar o tamanho da página. Enquanto eu vi o código para criar uma lista selecionada de tamanhos de página, prefiro ter elementos A para isso (como SO). Parte desse desafio está relacionada ao item 2; parte está relacionada à ocultação / exibição deste elemento da interface do usuário com base na existência / não existência de registros. Dito de outra maneira, eu só quero incluir links de tamanho de página se houver registros para a página. Além disso, prefiro incluir automaticamente as outras variáveis de QS (página, intervalo, classificação), em vez de incluí-las pelo nome no link_to.
fonte
Respostas:
Os documentos da API no link_to mostram alguns exemplos de adição de cadeias de consulta a rotas nomeadas e antigas. É isso que voce quer?
link_to
também pode produzir links com âncoras ou cadeias de consulta:fonte
Se você deseja o caminho mais rápido e sujo e não se preocupa com o ataque XSS, use
params.merge
para manter os parâmetros anteriores. por exemploconsulte: https://stackoverflow.com/a/4174493/445908
Caso contrário, verifique esta resposta: params.merge e scripts entre sites
fonte
Se você deseja manter os parâmetros existentes e não se expor a ataques XSS, limpe o hash dos parâmetros, deixando apenas os parâmetros que seu aplicativo pode enviar:
Se você o usar em vários locais, limpe os parâmetros no controlador:
fonte
Caso você queira passar um bloco, digamos, para um botão de glifo, como no seguinte:
Em seguida, a passagem de parâmetros de querystrings pode ser realizada através de:
fonte