2016-05-31 37 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到数据库中。