Перед тем, как поместить их в базу данных, необходимо правильно очистить и проверить свои значения team_logo
: первый символ вашего значения object.team.team_logo
- это пробел.
Если проследить через image_tag
реализации, вы обнаружите, что он в конечном итоге вызывает asset_path
:
def asset_path(source, options = {})
source = source.to_s
return "" unless source.present?
return source if source =~ URI_REGEXP
#...
У вас есть ведущие места в team_logo
поэтому тест URI_REGEXP
терпит неудачу и Rails будет предварять путь активов (и URL-адрес кодирует строку, следовательно, представление вашего пространства) %20
.
Вы должны сделать несколько вещей:
- добавить проверку вашей модели, чтобы убедиться, что
team_logo
всегда хорошо сформирован URL.
- Добавьте обратный вызов
before_validation
к вашей модели, чтобы очистить любые пробелы в приходящих team_logo
значениях.
- Перейдите по всем
team_logo
значениям в базе данных и очистите их, вам, вероятно, потребуется отремонтировать или удалить некоторые из них вручную.
После того как вы очистили свои данные, ваш image_tag
будет работать должным образом.
Я предполагаю, что вы можете удалить пропущенные пробелы в своем представлении, что довольно неприятно и не должно быть сделано, если вам не понадобится немедленное исправление, чтобы не допустить падения бизнеса в течение следующих пяти минут. И даже тогда вы захотите очистить данные и отбросить «очистить пробел в представлении» сразу.