@Backstabe

CarrierWave + russian как заставить работать?

Как транслитерировать имя файла при загрузке?
пытаюсь вот так.
def filename
  Russian.translit(original_filename) if original_filename.present?
end


Заменяет все символы на подчеркивание.
Если подставить строку вместо original_filename то транслитерирует и записывает имя файла как надо.
  • Вопрос задан
  • 591 просмотр
Решения вопроса 2
premas
@premas
Full-stack web-developer
Отлаживать код умеете?
Сделать ap на original_filename. Если все-равно не понятна суть бага, то binding.pry и в дебагере поиграть с переменной.

С точки зрения оптимизационных моментов стоит завести отдельное поле file_name. У меня в одном из проектов работает это так:
def filename
    model.file_name = Russian.translit(original_filename) || model.file_name
end
Ответ написан
Комментировать
@vsuhachev
Включите что-то типа этого внутрь определения класса аплоадера:
CarrierWave::SanitizedFile.sanitize_regexp = /[^[[:alnum:]]\.\-\+_]/


PS: это все описано в доке на carrierwave
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
original_filename.to_s
попробуйте.

И я не вижу что-бы вы в функцию передавали параметр original_filename, при этих раскладах это пустая переменная, так что правильно выдаёт ;)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы