Entfernen von "utf8 = ✓" aus Rails 3 Formulareinreichungen
Ich habe ein einfaches Suchformular in meine Rails 3 app:
<%= form_tag search_path, :method => "get" do %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "search", :name => nil %>
<% end %>
Wenn der Benutzer sich zuvor auf den submit-button, Sie erhalten, genommen, um die URL: http://myapp.com/search?utf8=%E2%9C%93&q=foobar
(wo %E2%9C%93
wird dargestellt als ein Häkchen: ✓).
Ich bin nicht etwas zu tun mit der utf8
parameter, so ich will, dass die URL sauber, indem Sie es völlig. Das heißt, ich will die Nutzer zu bekommen, der zu der URL: http://myapp.com/search?q=foobar statt.
Wie mache ich das?
Kommentar zu dem Problem
was hast du dann irgendwann? nur lassen Sie es dort?
shingara Antwort auf stackoverflow.com/questions/4104474 funktioniert: nutzen Sie einfach die
<form>...</form>
statt <%= form_tag %>...<% end %>
. Beachten Sie, dass Sie sollten dies nur tun, wenn die eingereichten Inhalte können nie in Ihrer Datenbank, wie bereits erläutert, auf stackoverflow.com/questions/3222013 . Es ist eine sehr relevante Frage, da ich nicht die Mühe machen möchten, meine Anwender mit workarounds für einen einzelnen non-standards-konforme browser. Ich will nur dieses "utf8=✓" für die wenigen IE-Benutzer, die ich habe.
wenn Sie möchten, ignorieren Sie die
- utf8
- Parameter mit Javascript/jQuery: serialisieren, können Sie die folgenden verwenden: $("form#my_form :input[name!='utf8']").serialize()
. Er ignoriert das - utf8
- Schlüssel/Wert-paar in das serialisierte params InformationsquelleAutor der Frage grautur | 2010-12-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Selbst wenn Sie nicht tun, alles, was mit dem parameter -, Schienen ist. Es ist zu beheben einige Probleme im IE den parameter encoding. Yehuda hat mehr info hier:
Was ist die _snowman param in Ruby on Rails 3 Formen?
InformationsquelleAutor der Antwort cdmwebs
Sobald Sie verstehen,der Zweck der Schienen UTF-8 param, und aus irgendeinem Grund, die Sie noch brauchen, um es zu entfernen, die Lösung ist einfacher, als Sie denken...einfach nicht mit dem
form_tag
Helfer:InformationsquelleAutor der Antwort Andrew
form_tag
in Rails 4.2 (und vermutlich früher) hat eine:enforce_utf8
option;(Gleiche wie https://stackoverflow.com/a/28201543/430695)
InformationsquelleAutor der Antwort Paul Annesley
Gibt es gem (utf8_enforcer_workaround) für die Anwendung der utf8-Parameter nur für nicht-standards einhaltenden Browser (oder jede andere Logik, dass wegen). Dies ist praktisch, wenn Sie nicht wollen, zu stören, Ihr Verhalten-Benutzer mit IE-workarounds.
InformationsquelleAutor der Antwort Jarl
Machte ich einen Initialisierer, entfernen Sie die Parameter von GET-Anforderungen. Es ist offensichtlich ein hack.
Diese geht in
config/initializers/overrides.rb
:Ideal, Schienen sollten wahrscheinlich eine Einstellung dafür, oder zumindest umschreiben extra_tags_for_form so ist es weniger chaotisch zu patch.
InformationsquelleAutor der Antwort Henrik N
Mit before_action und die Umleitung zu einer anderen Aktion für mich gearbeitet.
Zum Beispiel, wenn Sie sind auf der Suche nach posts, richten Sie eine route für die Suche auf der Kollektion.
machen und HTTP-GET-Anfrage für die Beiträge#index-Aktion.
und dann im PostsController,
- und call-Post.Suche in den Beiträgen#Suche action-und render-index-Seite.
Die URL Aussehen wird /posts/Suche?q=foo
InformationsquelleAutor der Antwort Ken Hibino
Versuchen, diese in Ihrem ApplicationController:
InformationsquelleAutor der Antwort Jan