2016-06-13 1 views
1

Я пытаюсь сохранить параметры из IPN PayPal, чтобы их можно было получить позже и использовать для перекрестной ссылки.Форсирование кодировки на ActionController :: Параметры

Простой немного кода, который сохраняет его в paypal_log колонке:

@order.paypal_log = params.to_json

работал отлично, толкнул производства и до сих пор работает нормально. Исследуя журналы на другой вопрос, я наткнулся на следующую строку:

Completed 500 Internal Server JSON::GeneratorError (source sequence is illegal/malformed utf-8):

Линия она указывает на это выше params.to_json

После поисков я обнаружил force_encoding("ISO-8859-1").encode("UTF-8") (source)

Я изменил линия до params.force_encoding("ISO-8859-1").encode("UTF-8").to_json и провела мои тесты с ошибкой:

undefined method `force_encoding' for #<ActionController::Parameters:0x000000073357f0>

Это делает меня тем, что по какой-то причине вы не можете разобрать всю переменную params, только хэш. Любое возможное решение для принудительного кодирования для всех параметров?

ответ

2

Может выполнять итерацию по каждому параметру и принудительное кодирование.

params.each { |k, v| params[k] = v.force_encoding('ISO-8859-1').encode('UTF-8') } 

 Смежные вопросы

  • Нет связанных вопросов^_^