2016-07-01 2 views
0

Я новичок в рельсах и в простой форме. У меня есть модель модели и модель тега. @ article.tags дают мне все теги, относящиеся к конкретной статье.rails simple_form поля, не имеющие отношения к модели

Я пытаюсь создать форму (например, stackoverflow), где теги могут быть введены как значения, разделенные запятой. Поскольку теги являются только именами как строковые значения, а не объектами, как их читать, когда публикуется форма, и как визуализировать html-ввод для этого текстового поля с помощью простой формы. Также как я могу получить теги как значения, разделенные запятыми, в форме редактирования.

+0

Созданы ли теги раньше? – davidwessman

+0

@davidwessman перед добавлением тегов, которые я планирую проверить, если они уже существуют в базе данных, если не создать новый – ZedBee

ответ

1

Я предлагаю вам взглянуть на драгоценный камень кокона (https://github.com/nathanvda/cocoon). Он используется для вложенных полей, поэтому вы можете динамически добавлять новые поля (в этом случае новые входы для тегов). Это не так сложно использовать, и это приятно для пользователя.

+0

спасибо .. Я изучаю его .. – ZedBee

1

Я бы порекомендовал: Select2 через драгоценный камень select2-rails.

Специально с тем, что они называют Tagging.

я реализую его выгрузку ЯШ:

function select2() { 
    $('.select2').select2({ 
    theme: 'bootstrap', 
    width: '100%' 
    }); 
} 

function select2Tags() { 
    $('.select2_tags').select2({ 
    tags: true, 
    theme: 'bootstrap' 
    }); 
} 

$(select2); 
$(select2Tags); 

И в форме я хотел бы сделать:

<%= f.association :tags, collection: Tag.all, 
           input_html: {class: 'select2'} %> 

Но это потребовало бы теги, которые будут созданы, прежде чем руки.

+0

Спасибо ... это работает для существующих тегов .. но что, если Я хочу разрешить пользователю вводить теги, которых еще нет в базе данных. – ZedBee

+0

Может использоваться только с обычным строковым вводом, а затем делать какой-то причудливый вызов before_save! – davidwessman

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