Program Club

Rails에서 문자열을 URL 이스케이프하려면 어떻게해야합니까?

proclub 2021. 1. 9. 10:23
반응형

Rails에서 문자열을 URL 이스케이프하려면 어떻게해야합니까?


Rails의 RHTML보기에 있다면 URL 이스케이프가 쉽습니다.

<a href="/redirect?href=<%=u target %>">Foo</a>

문자열에서 어떻게 수행합니까? 다음과 같이하고 싶습니다.

<% redirect_href = "/redirect?#{url_escape target}&amp;foo=bar&amp;baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>

사소한 일 이겠죠?


CGI.escape 는 다음을 수행합니다.

<% redirect_href = "/redirect?#{CGI.escape target}&amp;foo=bar&amp;baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>

Rails ( activesupport)는 다음을 정의합니다 Hash#to_param(으로 별칭 지정됨 Hash#to_query).

 {foo: 'asd asdf', bar: '"<#$dfs'}.to_param
 # => "bar=%22%3C%23%24dfs&foo=asd+asdf"

HTTP 캐싱을 위해 쿼리 키를 정렬한다는 점은 주목할 가치가 있습니다.

Hash#to_param 선택적 네임 스페이스 매개 변수도 허용합니다.

{name: 'David', nationality: 'Danish'}.to_param('user')
# => "user[name]=David&user[nationality]=Danish"

http://api.rubyonrails.org/classes/Hash.html#method-i-to_param


ERB :: Util.url_encode

루비 표준 lib의 일부인 어디에서나 사용할 수 있습니다.


사용 중 CGI::escape또는 ERB::Util.url_encode아니지만 URI.encode.

URI.escapeRuby 1.9.2에서 더 이상 사용되지 않습니다. URI.escape와 CGI.escape의 차이점은 무엇입니까?

참조 URL : https://stackoverflow.com/questions/6057972/how-do-i-url-escape-a-string-in-rails

반응형