2016-05-31 44 views
2

我對Rails很新,我需要在Rails的「form_for」中動態地添加/刪除輸入字段。我正在使用這些輸入來更改用戶的配置文件。如何在Rails 4上動態添加文本字段? (不嵌套)

這是我想打開動態代碼片段:

<%= f.label :languages, "Languages" %> 
<%= f.text_field :languages, class: "shortInput", value: @parsed_json_user['user']['languages']%> <br /> 

我已經看到了使用嵌套的屬性很多教程(我甚至什麼那些都是完全確定)等,但我不會用模型來。正如你所看到的,我只想要一個具有多個值的對象(例如數組),因爲我將使用API​​來更新「用戶」模型。

我需要這樣的東西:

語言:
英語刪除
添加新

我應該使用fields_for?或者以某種方式使用JS或JQuery?任何幫助,將不勝感激。

我到處搜索一個類似的問題,但沒有找到任何,但如果你真的知道或找到一個,指着我在正確的方向將是美好的!

在此先感謝

+0

你確定你需要一個文本字段嗎?對我來說,這看起來像一個選擇框。您可以使用更具交互性的select2進行多選選項。 – emaillenin

+0

我可以使用一個選擇框,但我認爲這會限制我的用戶的選擇。如果我找不到解決方案,我最終會按照你的建議去做。想象一下,有人只會說福拉(或其他未列出的語言)。沒有它在名單中會是一個無賴。無論如何謝謝你的建議! – fmlopes

+0

在select2中,還有一個選項可以添加新條目。不只是已經存在的那些。 – emaillenin

回答

0

@languages =用戶語言

f.collection_select :user_languages[], @languages, :id, :name , {hide_label: true, :selected => @languages.first.id} , {:style => "width: 120px",:required => true} 
+0

考慮到@languages是一個字符串數組,我應該調用什麼而不是「id」和「name」? – fmlopes

+0

儘量不要把這兩個值 – Boltz0r

+0

我設法使它工作,但作爲最終用戶,我需要做2件事: 選擇多個項目並且 添加一個自定義值。 謝謝你 – fmlopes

-1

更新:對於單一形式,沒有嵌套 - 一種選擇是砍了一下自己的jQuery。我使用了不同的網站進行測試,但是這個Jquery example是我發現的更容易的。我刪除了有關領域的最大的計數器的東西......它會在/app/assests/javascript/.js ...

$(document).ready(function() { 

    $(".add_field_button").click(function(e){ //on add input button click 
     e.preventDefault(); 
      $('.input_fields_wrap').append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box 
     } 
    }); 

    $(".input_fields_wrap").on("click",".remove_field", function(e){ //user click on remove text 
     e.preventDefault(); $(this).parent('div').remove(); 
    }) 
}); 

和HTML代碼...

<div class="input_fields_wrap"> 
     <button class="add_field_button">Add More Fields</button> 
     <div><input type="text" name="mytext[]"></div> 
    </div> 

如果你還沒有運氣 - Cocoon Gem或railscast 197/198將做你需要的jquery這是動態的。忽略有關嵌套的部分,只需從中獲取所需內容即可。

而且,我仍然關注着在turbolinks最近有一個更新......你也許能找到答案有可能......不正是你想要的東西......

從什麼我可以告訴的是,依賴於您在rails中編寫的兩條路徑,然後通過作用於(添加/刪除)的jquery構建:在link_to_add_association或link_to_remove_association之前或之後添加/隱藏視圖中的字段該dom &然後更新按鈕實際上推動整個混亂通過activeRecord到數據庫中。

相關問題