2011-12-28 65 views
0

我使用tokeninput多个标签自动完成插件(http://loopj.com/jquery-tokeninput/demo.html),它是在New形式的工作就好了。jQuery的+ Rails的3 + TokenInput插件+预填充

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

但是当我做这样的

prePopulate: k.getJSON("tag_list_pre") 

其中tag_list_pre是返回JSON格式的选择标签的动作。 如果我提醒

alert(getJSON("tag_list_pre")); 

返回[object Object],并没有预先填充任何内容。

我认为问题出在一些地方,当我的文件返回JSON格式的数据,并在视图的这一边它没有得到所需的结果。

类似的问题问到这个问题,但还没有回答https://stackoverflow.com/q/5892326/489018

UPDATE: 我现在用同样的方法,在http://railscasts.com/episodes/258-token-fields?view=asciicast 我使用的数据预并获得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和name格式的数组@@ 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" 
}); 

现在我的问题是,它是预先填充什么。其他一切正常。

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

+0

价值看一看我的[回答类似的问题(http://stackoverflow.com/问题/ 8656284/example-for-using-jquery-auto-complete-plugin-with-rails/8656721#8656721),尤其是使用配方的底部如何在Rails3中使用带有JQuery的令牌输入 - – mliebelt 2011-12-28 15:00:11

+0

嗨@milebelt感谢你的答复,但我也尝试过,我无法弄清楚为什么这不起作用。所以我试过这个选项。 由于该选项的作用相同。返回JSON文件。我的编辑表单非常复杂,它带来了来自6-8个不同模型的数据。另外我不确定如何使用.map(&:attributes).to_json。如果你可以提供更多关于.map函数的细节,那将会很棒。谢谢。 – Kashyap 2011-12-29 04:37:22

+0

@mliebelt我已经添加了您在其他问题中提到的代码,并且在下面打印了该代码,并且获得了以下结果。 [{“created_at”:“2011-12-28T12:26:30 + 05:30”,“id”:10,“project_master_id”:7,“tag_master_id”:5,“updated_at”:“2011-12- 28T12:26:30 + 05:30 “},{” created_at “:” 2011-12-28T12:26:30 + 05:30" , “ID”:11 “project_master_id”:7, “tag_master_id”:8 ,“updated_at”:“2011-12-28T12:26:30 + 05:30”}] 尽管所需的json格式为 [{“id”:“5”,“name”:“payment-processing” },{“id”:“8”,“name”:“asd”}] – Kashyap 2011-12-29 07:35:06

回答

0

这很晚,但我遇到了确切的问题。错误发生在text_field_tag的调用中。

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

正如你所看到的,第二个参数是为text_field值和第三个是options PARAM。您需要通过nil作为value,以便data-pre作为option通过。

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

如果不传递任何value,将采取data-pre作为text_field