Текстовое поле в Rails, размер которого увеличивается динамически - PullRequest
1 голос
/ 05 мая 2011

Я пытаюсь реализовать функцию групп, похожую на функцию Facebook, в моем проекте. Я использую Rails 2.0.2 и Ruby 1.8.7 для конкретных проектов. Я использую Ubuntu 10.04 OS.

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

В Rails при определении ваших миграций есть способ иметь огромную текстовую область для таких атрибутов, как Description, код для чего-то подобного в миграции t.text :description.

Теперь это выглядит не очень хорошо в большинстве случаев, когда темы для обсуждения и соответствующие комментарии не такие большие.

Учитывая это, есть ли другой способ обойти это, когда текстовое поле может динамически управляться на основе размера текста, введенного во время выполнения. Если да, то, пожалуйста, объясните мне, как я могу поступить так же.

Кроме того, какой тип атрибута я бы назвал, как для того же самого.

Любые предложения / предложения по этому вопросу высоко ценятся ..

Спасибо ...:)

1 Ответ

1 голос
/ 05 мая 2011

Хорошо, сначала я должен указать, что t.text в файле миграции не обязательно является причиной, по которой, по вашему мнению, вы получаете большую текстовую область.t.text просто информирует генератор рельсов о создании столбца в данной таблице, который может хранить большие текстовые данные.

Но если вы используете скаффолдинг, сгенерированное представление будет использовать f.text_area для визуализации соответствующего поля наэкран, и поэтому он кажется большим.

Теперь, если вы хотите, чтобы текстовая область была маленькой и позволяла ей расти в соответствии с ее содержимым, вам нужно использовать JavaScript.И моя любимая библиотека JavaScript / framrwork - это jQuery, и если вы знакомы с jQuery, вы можете использовать плагин jQuery, такой как jQuery, расширяющая текстовую область ( demo ) для достижения этой цели.Однако Rails 2 по умолчанию использует Prototype / Scriptaculous и, если вы хотите придерживаться этого, вы можете использовать аналогичный плагин Prototype, такой как этот или написать что-то с нуля, например this .

...