1
Использование Ruby 1.9.1 или 1.9.3, у меня есть проблема с вставкой символа %
в базу данных.Как мне закодировать URL-адрес, если это частный метод?
Исключение:
/app/vendor/ruby-1.9.3/lib/ruby/1.9.1/uri/common.rb:898:in `decode_www_form_component'
мне сказали, чтобы использовать p
для вывода str
.
Это рубин/Библиотека/1.9.1/Util/common.rb:
def self.decode_www_form_component(str, enc=Encoding::UTF_8)
require 'logger'
# Keep data for the current month only
$LOG = Logger.new('this_month.log', 'monthly')
$LOG.debug("#{str.p}")
raise ArgumentError, "invalid %-encoding (#{str})" unless /\A[^%]*(?:%\h\h[^%]*)*\z/ =~ str
str.gsub(/\+|%\h\h/, TBLDECWWWCOMP_).force_encoding(enc)
end
Я получил эту ошибку:
Internal Server Error
cannot parse Cookie header: private method `p' called for "innate.sid":String
Как p
str
, чтобы узнать, что находится внутри него и, может быть, какая кодировка?
Вы изменяете код URI? Не делай этого! Очень легко написать метод, который переопределит его в вашем собственном коде, или просто обернуть его и вывести в журнал. Если вы меняете системный или основной код, вы затрагиваете каждый другой скрипт, который будет использовать этот метод, который может иметь плохие результаты, если есть ошибка. Одна из лучших возможностей OO-языка - мы можем переопределить, не изменяя код базового класса –