перенос слов в рельсах 4 приложение вообще не работает

0

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

<%= skill.description %>

Я читал http://api.rubyonrails.org раздел word_wrap и пробовал все следующее.

<%= word_wrap(skill.description.to_s, line_width: 8) %> #because description is stored as text in database

а также

<%= word_wrap(skill.description, line_width: 8) %>

вышесказанное просто не работает вообще. я binding.pry'd и получил эту ошибку:

ArgumentError: wrong number of arguments (0 for 1..2)

Я также попытался добавить это в свой application_controller:

def wrap(s, width=78)
s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
end

и обертывание на мой взгляд так:

<%= wrap(skill.description.to_s, 8) %>

Я даже попытался поместить метод wrap внутри моего user_controller и как последнюю попытку даже внутри моего файла представления. Какие-либо предложения?

Я заметил, что это работает на моей консоли:

wrap(skill.description, 8)
=> "code\nstuff,\nlearn\nprogramming\nin many\ndifferent\nlanguages\nright in\nyour\nbrowser\nfor free\n"
Теги:
newline
word-wrap
ruby-on-rails-4

2 ответа

0
Лучший ответ

Я понял, что это хакерский способ сделать это, пожалуйста, дайте лучшее решение, если оно доступно.

(Это должно быть в состоянии пойти в модель, но ее не работает, поэтому я помещаю ее в представление, пока кто-то не сможет мне помочь в этом)

def wrap(s, width=78)
  s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1<br>").html_safe
end

Здесь вид:

<%= wrap(skill.description.to_s, 65) %>

Примечание в Regex я изменил \n на
который похож на эквивалент новой строки на html-странице, тогда я сделал html-работу, добавив.html_safe. снова кажется беспорядочным, но он работает.

0

word_wrap добавляет \n. Используйте простой формат для замены \n с помощью html newlines:

<%= simple_format(word_wrap(skill.description, line_width: 8)) %>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню