Лучший способ кодировать URL-адреса? - PullRequest
1 голос
/ 02 декабря 2009

В настоящее время я занимаюсь разработкой CMS и хочу хорошо кодировать специальные символы в URL. Я не хочу использовать Rack :: Utils.escape.

Уже есть классный камень?

С уважением

Ответы [ 3 ]

3 голосов
/ 02 декабря 2009

Посмотрите на строку stringex gem здесь , она может использоваться даже без направляющих, но содержит некоторые элементы, облегчающие ее использование (с направляющими). ​​

1 голос
/ 02 декабря 2009

Библиотека Ruby CGI должна делать то, что вам нужно:

url_encoded_string = CGI::escape("'Stop!' said Fred")
# => "%27Stop%21%27+said+Fred"

См. http://ruby -doc.org / core / classes / CGI.html

0 голосов
/ 04 декабря 2009

Ну, обычно я использую удобный метод, называемый String.to_slug. Я надеюсь, что вы найдете это полезным.

Назовите этот /lib/to_slug.rb и включите его в один инициализатор или включите его только в модель, генерирующую URL.

String.class_eval do

  #converts accented letters into ascii equivalents (eg. ñ becomes n)
  def normalize
    #this version is in the forums but didn't work for me
    #chars.normalize(:kd).gsub!(/[^\x00-\x7F]/n,'').to_s
    mb_chars.normalize(:d).gsub(/[^\x00-\x7F]/n,'').to_s
  end

  #returns an array of strings containing the words on a string
  def words
    gsub(/\W/, ' ').split
  end

  #convert into a nice url-ish string
  def to_slug(separator='-')
    strip.downcase.normalize.words.join(separator)
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...