0

我正在使用 tokeninput 插件(http://loopj.com/jquery-tokeninput/demo.html)来自动完成多个标签,并且它在New表单上工作得很好。

现在我想在编辑表单中预先填充相同的内容;这是我遇到困难的地方。我创建了一个文件,它以 json 格式(id 和 name)返回值。如果我从服务器日志中复制这些结果并将其放入 tokeninput 插件的 prePopulate 选项中,它就可以正常工作。

但是当我这样做时

prePopulate: k.getJSON("tag_list_pre")

wheretag_list_pre是以 json 格式返回所选标签的操作。如果我提醒

alert(getJSON("tag_list_pre"));

它返回[object Object]并且不预先填充任何内容。

我认为问题出在某些地方,当我的文件返回 json 格式数据时,在视图的这一侧,它没有得到预期的结果。

在这个问题中提出了类似的问题,但尚未回答https://stackoverflow.com/q/5892326/489018

更新: 我现在使用与http://railscasts.com/episodes/258-token-fields?view=asciicast相同的方法 我正在使用 data-pre 来获取令牌所需的 json 格式 id 和名称字符串-输入。

样本输出是

[{"id":"5","name":"payment-processing"},{"id":"8","name":"asd"},{"id":"15","name":"java"}]

现在我的 HTML 文本标签看起来像这样。

<%= text_field_tag :project_tags, "data-pre" => @list1.to_json %>

其中 list1 是 id 和名称格式的数组 @list1 的示例输出如下所示。

[{:id=>"5", :name=>"payment-processing"}, {:id=>"8", :name=>"asd"}, {:id=>"15", :name=>"java"}] 

和新的 tokenInput 看起来像这样:

  k("#project_tags").tokenInput("tag_list", {
  prePopulate: k("#project_tags", k(this)).data("pre"),
  hintText: "Enter Tags for your Project",
  noResultsText: "No Such Tags",
  searchingText: "Looking for your Tags",
  preventDuplicates: true,
  theme: "facebook"
 });

现在我的问题是它没有预先填充任何内容。其他一切都很好。

谢谢。如果您需要更多信息,请与我们联系。

4

1 回答 1

0

已经很晚了,但我遇到了确切的问题。错误在于对text_field_tag的调用。

text_field_tag(name, value = nil, options = {})

如您所见,第二个参数是 的值,text_field第三个是options参数。您需要传递nilasvalue以便data-pre传递为option

<%= text_field_tag :project_tags, nil, "data-pre" => @list1.to_json %>

如果您不通过任何value,它将data-pre作为text_field

于 2014-07-15T13:32:00.983 回答