Esta é uma situação muito simples, mas confusa, eu procurei por um tempo mas não encontrei uma resposta certa sobre Rails.
Usando Jquery podemos adicionar parâmetros a uma url para enviar ao servidor ao clicar, esta pode ser uma solução fácil para casos NÃO FORMULÁRIOS quando você tem que enviar ids dinamicamente, dados, etc. para o servidor.
Em primeiro lugar, vamos imaginar que temos um JSON:
json_data = {"1": "data1", "2": "data2"}
Isso é fácil de enviar usando ajax
$.ajax
format: "json"
url: "some/url"
data: {"mydata": JSON.stringify(json_data)}
Lá em cima que irá enviar uma solicitação ao servidor com os dados analisados para manipulação, mas e se quisermos enviar por meio de um clique para redirecionar a página usando uma solicitação de atualização e não um ajax normal?
teremos que usar uma das muitas soluções como usar formulários e envios, realocar a página, etc.
Para este caso usaremos uma solução onde enviaremos o json analisado para os links href para enviar para o servidor clicando
Para fazer isso, vamos imaginar que temos um link:
<a href="some/address" >mylink</a>
Então usamos este coffeescript:
$("a").attr "href", $("a").attr("href").split("?")[0] + "?" + JSON.stringify(json_data)
Com isso, o json é adicionado à url, mas causará um erro de servidor de solicitação incorreta porque o json ainda não é compatível com URI. Para fazer isso, adicionamos encodeURI ou encodeURIelement dependendo do seu Unicode.
$("a").attr "href", $("a").attr("href").split("?")[0] + "?" + encodeURI(JSON.stringify(json_data))
Isso tornará os dados JSON amigáveis para o servidor, mas ainda há um problema … o rails é meio mal-humorado com os valores-chave e isso será mostrado na solicitação:
{ "_method"=>"get",
"authenticity_token"=>"C0/ye7xMH2Yvkvr7gM63EGRnTi+BUbQPZ0xsoDv0P8w=",
"{"1"": data1}""=>nil