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