Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何使用隐藏的输入字段存储博客文章的标记集_Ruby On Rails 3_User Interface_Tagging - Fatal编程技术网

Ruby on rails 3 如何使用隐藏的输入字段存储博客文章的标记集

Ruby on rails 3 如何使用隐藏的输入字段存储博客文章的标记集,ruby-on-rails-3,user-interface,tagging,Ruby On Rails 3,User Interface,Tagging,我有一些为博客文章输入标签的有点怪的UI:当标签被输入到一个输入字段中时,它们被包装成一个跨距,通过在一个样式化的框中包围它们使它们看起来很漂亮,最终的结果是这样的: 现在,这个输入字段称为字段1,它不是提交给控制器的表单的一部分,我正在使用RoR btw,原因有两个:除了实际的标记之外,它还包含额外的html标记;此外,如果它是表单的一部分,则按enter键将提交表单,而不是触发将输入的标记包装成span的js 所以我要做的是,当输入每个标记时,我通过js将其值复制到一个隐藏的输入字段中,该

我有一些为博客文章输入标签的有点怪的UI:当标签被输入到一个输入字段中时,它们被包装成一个跨距,通过在一个样式化的框中包围它们使它们看起来很漂亮,最终的结果是这样的:

现在,这个输入字段称为字段1,它不是提交给控制器的表单的一部分,我正在使用RoR btw,原因有两个:除了实际的标记之外,它还包含额外的html标记;此外,如果它是表单的一部分,则按enter键将提交表单,而不是触发将输入的标记包装成span的js

所以我要做的是,当输入每个标记时,我通过js将其值复制到一个隐藏的输入字段中,该字段是标记输入表单的一部分,提交时将只包含标记值,而不包含其他内容。问题是:我应该使用什么作为分隔符来分隔隐藏输入字段中的标记。目前我正在使用“;”但是如果标签本身包含;那会引起问题的

我也愿意接受关于如何跟踪输入到“字段1”中的标签的一般方法的建议


非常感谢,

我建议只为每个标记添加一个隐藏输入

<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />
我对tokenInput jQuery插件使用了类似的方法。但在我的例子中,我把它放在了表格里。我解决了您提到的问题,通过捕获按键事件并阻止该输入,我忽略了搜索输入值

我最喜欢的一件事就是把它保存在表单中,那就是它之后是如何管理的。我将隐藏的标记、名称和删除的“x”放置在一个跨度中,如您所述,然后在单击“x”时删除此标记。我喜欢这样,因为名称和隐藏的标签会同时被删除


还有一个建议。如果可以,请在隐藏字段中传递标记id。这样,您就不必添加标签属性add all:。

这是一个很好的回答,谢谢!你提到的插件正是我想要的。但在插件上有一个问题:是否有一种方法允许用户输入不在自动完成中的标记,即用户输入标记,不向下滚动以从自动完成列表中选择任何内容,只需按enter键,标记就会简单地添加为输入。谢谢!tokenInput的工作方式与我上面描述的标签中隐藏的_标记的工作方式大致相同。您可以观察按下enter键的时间,然后手动添加标签。我相信有很多方法可以做到这一点,其他人可能会给出不同的答案。我做的有点不同。在JSON自动完成响应中,我在顶部添加了一个“Add:{q}”。这将强制单击–通过按enter键防止意外添加。然后从模型中,我提取了字符串ID并创建了一个新标记。剩下的我只是添加了标签ID。这有点含糊;如果你想举个例子,请告诉我。
def tags=(value)
   tag_array = [*value]
   # then just filter these out.
end