[RUBY-ON-RAILS] 레일 3 개 양식을 제출에서 제거 "UTF8 = ✓"
RUBY-ON-RAILS레일 3 개 양식을 제출에서 제거 "UTF8 = ✓"
내 레일 3 응용 프로그램에서 간단한 검색 양식을 가지고 :
<%= form_tag search_path, :method => "get" do %>
<%= text_field_tag :q, params[:q] %>
<%= submit_tag "search", :name => nil %>
<% end %>
사용자가 submit 버튼을 누르면, 그들은 URL로 이동 얻을 : http://myapp.com/search?utf8=%E2%9C%93&q=foobar (여기서, E2 % 9C % 93 %가 확인 표시로 표시됩니다 : ✓).
내가 완전히 제거하여 URL의 청결을 유지하려는, 그래서 나는 UTF8 매개 변수와 함께 아무것도 아니에요. 대신 http://myapp.com/search?q=foobar : 그건 내가 사용자가 URL로 이동 얻을 싶어합니다.
이걸 어떻게해야합니까?
해결법
-
==============================
1.당신이 매개 변수를 사용하여 작업을 수행하지 않는 경우에도, 레일입니다. 그것은 IE의 매개 변수 인코딩에서 몇 가지 문제를 해결하는 데있다. 예후는 여기에 더 많은 정보를 가지고 :
당신이 매개 변수를 사용하여 작업을 수행하지 않는 경우에도, 레일입니다. 그것은 IE의 매개 변수 인코딩에서 몇 가지 문제를 해결하는 데있다. 예후는 여기에 더 많은 정보를 가지고 :
3 개 형태의 레일에 루비의 _snowman PARAM은 무엇인가?
-
==============================
2.당신은 레일 UTF-8 PARAM의 목적을 이해하고, 어떤 이유로 당신은 아직도 그것을 제거 할 필요가되면, 솔루션은 단지 때 form_tag 도우미를 사용하지 않는 ... 생각보다 쉽다 :
당신은 레일 UTF-8 PARAM의 목적을 이해하고, 어떤 이유로 당신은 아직도 그것을 제거 할 필요가되면, 솔루션은 단지 때 form_tag 도우미를 사용하지 않는 ... 생각보다 쉽다 :
<form action="<%= search_path %>" method="get"> <%= text_field_tag :q, params[:q] %> <%= submit_tag "search", :name => nil %> </form>
-
==============================
3.레일에 때 form_tag 4.2 (아마도 이전)을 가지고 enforce_utf8 옵션을;
레일에 때 form_tag 4.2 (아마도 이전)을 가지고 enforce_utf8 옵션을;
(동일로 https://stackoverflow.com/a/28201543/430695)
-
==============================
4.전용 브라우저 (또는 이익을 위해 다른 논리를) 준수 비 표준의 UTF8의 PARAM을 적용하는 보석 (utf8_enforcer_workaround)이 있습니다. 당신이 IE의 해결 방법으로 잘 행동 사용자를 귀찮게하지 않으려는 경우에 유용합니다.
전용 브라우저 (또는 이익을 위해 다른 논리를) 준수 비 표준의 UTF8의 PARAM을 적용하는 보석 (utf8_enforcer_workaround)이 있습니다. 당신이 IE의 해결 방법으로 잘 행동 사용자를 귀찮게하지 않으려는 경우에 유용합니다.
-
==============================
5.나는 GET 요청에서 PARAM을 제거하기 위해 초기화했다. 그것은 분명히 해킹.
나는 GET 요청에서 PARAM을 제거하기 위해 초기화했다. 그것은 분명히 해킹.
이것은에서 설정 / 초기화 / overrides.rb 간다 :
# Don't let Rails add a utf8=✓ param to GET forms. # See http://stackoverflow.com/questions/3222013/what-is-the-snowman-param-in-rails-3-forms-for for details. module ActionView::Helpers::FormTagHelper private def extra_tags_for_form_with_utf8_param_excluded_from_gets(html_options) old = extra_tags_for_form_without_utf8_param_excluded_from_gets(html_options) non_get = old.include?('"_method"') || old.include?('"'+request_forgery_protection_token.to_s+'"') if non_get old else old.sub(/<[^>]+name="utf8"[^>]+"✓"[^>]*>/, '').html_safe end end alias_method_chain :extra_tags_for_form, :utf8_param_excluded_from_gets end
이상적으로, 레일은 아마 이것에 대한 설정을해야한다, 또는 적어도 재 작성 extra_tags_for_form에서이 패치에 덜 지저분한 그래서.
-
==============================
6.귀하와 ApplicationController이 시도 :
귀하와 ApplicationController이 시도 :
def default_url_options(options={}) options.delete('utf8') end
-
==============================
7.나를 위해 일한 다른 동작에 before_action 및 리디렉션을 사용. 당신이 게시물을 검색하는 경우 예를 들어, 컬렉션 검색 경로를 설정합니다.
나를 위해 일한 다른 동작에 before_action 및 리디렉션을 사용. 당신이 게시물을 검색하는 경우 예를 들어, 컬렉션 검색 경로를 설정합니다.
resources :posts do collection do get 'search' end end
및 HTTP GET 게시물 번호 인덱스 작업에 대한 요청을합니다.
<%= form_tag posts_path, method: :get do %> <%= search_field_tag :q, params[:q], placeholder: "Search posts" %> <%= submit_tag "Go" %> <% end %>
후가 PostsController에,
before_action :check_for_query, only: :index ... private def check_for_query redirect_to articles_search_url(q: params[:q]) if params[:q].present? end
및 게시물 번호 검색 행동에 Post.search를 호출하고 인덱스 페이지를 렌더링합니다.
def search Post.search(params[:q]) render :index end
URL은 / / 게시물과 같이 검색합니다? Q = foo는
-
==============================
8.enforce_utf8 : 거짓을 때 form_tag에 나는 우리가 사용한다고 생각합니다.
enforce_utf8 : 거짓을 때 form_tag에 나는 우리가 사용한다고 생각합니다.
전의:
= form_tag search_path, method: :get, id: 'searchForm', enforce_utf8: false
from https://stackoverflow.com/questions/4487796/removing-utf8-from-rails-3-form-submissions by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 루비 온 레일즈에 has_many 항목의 수의 유효성을 검사합니다 (0) | 2020.02.14 |
---|---|
[RUBY-ON-RAILS] 어떻게 레이크 작업에 RAILS_ENV를 강요하는 걸까? (0) | 2020.02.14 |
[RUBY-ON-RAILS] 어떻게 액티브 콜백을 건너 뛰려면? [복제] (0) | 2020.02.14 |
[RUBY-ON-RAILS] 고안 비밀 키가 설정되지 않았습니다 (0) | 2020.02.14 |
[RUBY-ON-RAILS] 정의되지 않은 메서드 '구성': 오류 발사는 서버를 레일 (0) | 2020.02.14 |