如何参数化字符串而不在Rails中使其小写

时间:2014-01-07 09:05:34

标签: ruby-on-rails

有一个很好的方法,parameterize,但它使字符串小写。那么有没有一种方法来参数化字符串而不使其小写?

3 个答案:

答案 0 :(得分:7)

在Rails 5中,您可以添加preserve_case选项以进行参数化。

Parent

http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize

答案 1 :(得分:3)

这是parameterize的来源。因此,您可以定义新方法,只需将最后一行parameterized_string.downcase更改为parameterized_string

即可
# File activesupport/lib/active_support/inflector/transliterate.rb, line 80
def parameterize(string, sep = '-')
  # replace accented chars with their ascii equivalents
  parameterized_string = transliterate(string)
  # Turn unwanted chars into the separator
  parameterized_string.gsub!(/[^a-z0-9\-_]+/, sep)
  unless sep.nil? || sep.empty?
    re_sep = Regexp.escape(sep)
    # No more than one of the separator in a row.
    parameterized_string.gsub!(/#{re_sep}{2,}/, sep)
    # Remove leading/trailing separator.
    parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/, '')
  end
  parameterized_string.downcase
end

答案 2 :(得分:0)

我不确定你的目的是什么,但parameterize方法旨在使字符串URL安全。 Capital letters are not safe to use in URLs.

但是,如果你坚持你总是这样做:

"AsDF".parameterize.capitalize # => "Asdf"