0

好吧,我能够在通过acts_as_taggable gem 注册他们的个人资料时成功存储用户定义的标签。问题在于显示和更新它们。出于显示目的,我使用了 jquery tag-it 插件。

现在,gem 将所有标签作为单个字符串提供给表单,它们之间有空格,而插件需要它们在有序列表中,以便所有标签可以单独显示。

我的查看代码:

如果我使用 <%= f.text_field :intersted_list, class: 'form-control', id: 'intersted' %>,检索到的所有标签都显示为单个标签。

如果我使用:

<ul id="intersted"> <% resource.intersted_list.each do |tag| %> <li><%= tag %></li> <% end %> </ul>

所有标签都单独显示。但是,我无法添加或更新它们,因为它们不再是表单的一部分。

Javascript代码:

$("#intersted").tagit();

所有指针将不胜感激..提前谢谢..

4

2 回答 2

1

好吧,我无法找到这个问题的系统答案。但是在@Max 的回答的帮助下,我只是想解决这个问题。

我刚刚将 value 属性添加到标签中。IE

<%= f.text_field :intersted_list, class: 'form-control', id: 'intersted', value: resource.intersted_list.to_s.gsub!(' ',',') %>

尽管传递值标签是多余的,但它解决了我的问题..

于 2017-07-02T09:34:38.323 回答
1

我怀疑您的代码还有其他问题,因为我相信您所拥有的应该可以工作。

Tag-it 有几种不同的方法可以构建小部件。您可以在https://aehlke.github.io/tag-it/examples.html的 HTML 源代码中看到这些。请注意,不幸的是,该页面需要通过非 HTTPS 链接使用 jQuery,因此您可能必须禁用浏览器对在 HTTPS 页面上包含 HTTP 资产的保护。

使用单个输入的最快方法是将字段的值设为逗号分隔的列表,例如<input name="tags" id="singleFieldTags2" value="Apple, Orange">然后只启动小部件而不使用任何选项:$('#singleFieldTags2').tagit();这是示例页面上的“单输入字段 (2)”选项. 如果您没有使用此选项正确显示标签,则听起来您的 ERB 没有生成正确的 HTML(尽管看起来应该如此)。您可能想确认一方面可以让 Tag-it 在使用静态 HTML 的页面上正常工作,并且您可以使用 Ruby/ERB 生成带有逗号分隔关键字的正确文本字段(没有 Tag-it ) 在另一。

您的第二种方法也应该有效,尽管您必须确保它包含在<form>元素中;Tag-it 将为<input>您生成 s,但它们需要在表单中才能提交。

于 2017-07-01T19:39:47.717 回答