好吧,我可以通过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();
所有指针都将受到赞赏.. 提前谢谢..
答案 0 :(得分:0)
我怀疑你的代码还有别的东西,因为我相信你的代码应该有用。
标记 - 它有几种不同的方法可以构建窗口小部件。您可以在https://aehlke.github.io/tag-it/examples.html的HTML源代码中看到大量这些内容。请注意,该页面不幸需要通过非HTTPS链接进行jQuery,因此您可能必须禁止浏览器防止在HTTPS页面上包含HTTP资产。
使用单个输入的最快方法是将字段的值设置为以逗号分隔的列表,例如<input name="tags" id="singleFieldTags2" value="Apple, Orange">
,然后只启动窗口小部件而不使用任何选项:$('#singleFieldTags2').tagit();
这是&#34;单输入字段(2)&#34;示例页面上的选项。如果您没有使用此选项正确显示标记,则听起来您的ERB不会生成正确的HTML(尽管看起来应该如此)。您可能希望确认一方面可以使用静态HTML在页面上正常使用Tag-it,并且可以使用Ruby / ERB生成带有逗号分隔关键字的正确文本字段(不使用Tag-it)另一方面。
你的第二种方式也应该有用,但你必须确保它包含在<form>
元素中;标记它会为您生成<input>
,但它们需要在表单中才能提交。
答案 1 :(得分:0)
好吧,我无法找到问题的系统答案。但是在@ Max的答案的帮助下,我刚刚找到了问题的补丁。
我刚刚将value属性添加到标记中。即。
<%= f.text_field :intersted_list, class: 'form-control', id: 'intersted', value: resource.intersted_list.to_s.gsub!(' ',',') %>
即使传递值标签是多余的,它也解决了我的问题..