J'ai un formulaire de recherche simple dans mon application Rails 3 :
<%= form_tag search_path, :method => "get" do %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "search", :name => nil %>
<% end %>
Lorsque l'utilisateur appuie sur le bouton d'envoi, il est dirigé vers l'URL : http://myapp.com/search?utf8=%E2%9C%93&q=foobar (où %E2%9C%93
s'affiche sous la forme d'une coche : ).
Je ne fais rien avec le utf8
Je veux donc garder l'URL propre en le supprimant entièrement. En d'autres termes, je veux que les utilisateurs soient dirigés vers l'URL : http://myapp.com/search?q=foobar à la place.
Comment dois-je m'y prendre ?
3 votes
Qu'avez-vous fait finalement ? Vous l'avez laissé là ?
3 votes
Réponse de shingara sur stackoverflow.com/questions/4104474 fonctionne : il suffit d'utiliser
<form>...</form>
plutôt que<%= form_tag %>...<% end %>
. Notez que vous ne devez procéder de la sorte que si le contenu soumis ne peut jamais se retrouver dans votre base de données, comme expliqué à la page stackoverflow.com/questions/3222013 .2 votes
C'est une question très pertinente car je ne veux pas ennuyer mes utilisateurs avec des solutions de contournement pour un seul navigateur non conforme aux normes. Je ne veux ce "utf8=" que pour les quelques utilisateurs d'IE que je possède.
2 votes
Voir ma réponse re. le
:enforce_utf8
option pourform_tag
.0 votes
Si vous voulez ignorer le
utf8
param en utilisant Javascript/jQuery serialize, vous pouvez utiliser ce qui suit :$("form#my_form :input[name!='utf8']").serialize()
. Il ignorera leutf8
paire clé/valeur dans les paramètres sérialisés