2015-08-14 70 views
0

我試圖在表單中擁有一組動態的輸入,它以一個開始,您可以使用添加/刪除按鈕添加或刪除它們。然後,在提交表單後,它將輸入的值變成散列,然後將散列成字符串進行存儲。我真的不知道從哪裏開始。所以任何提示都會有幫助。Ruby - 數組輸入集

如果使用javascript將有所幫助,我可以去那條路線,但我不知道如何使JavaScript和紅寶石談話。

+1

您可能想要研究嵌套屬性;瑞恩貝茨在這方面做了一個[railscast](https://www.youtube.com/watch?v=-WJUaCI-SWg)。你也可能對[cocoon gem](https://github.com/nathanvda/cocoon)感興趣。 – kjmagic13

回答

2

根據您的使用情況,您可能需要使用幾個選項。既然你已經用rails標記了這個,我假設你有權訪問JQuery。這裏是你怎麼可能去加入到頁字段動態使用它一個(很簡單),例如:

https://jsfiddle.net/3Lyvw0jm/

如果你打算存儲你的機型之一這些領域,你可能要採取請看執行nested attributes

1

作爲一種常見的網絡事物(不是Rails特有的),您可以使name的值看起來像some_name[]

因此,而不是具有不同的名字,如這種多輸入:

<input type='text' id='my_input_1' name='my_input_1' value='string_1' /> 
<input type='text' id='my_input_2' name='my_input_2' value='string_2' /> 
<input type='text' id='my_input_3' name='my_input_3' value='string_3' /> 

...的服務器上的你:

​​

你必須:

<input type='text' id='my_input_1' name='my_inputs[]' value='string_1' /> 
<input type='text' id='my_input_2' name='my_inputs[]' value='string_2' /> 
<input type='text' id='my_input_3' name='my_inputs[]' value='string_3' /> 

...你在服務器上得到:

params :my_inputs # ['string_1','string_2',string_3'] 
+0

你需要將哪種模型字段保存到數據庫中? – thedanotto

+0

這可能有多種應用程序,所以它將取決於應用程序。例如,輸入可以與[jQueryUI自動完成](https://jqueryui.com/autocomplete/)一起使用來添加標籤。輸入將包含標籤的'name'。然後,假設你的對象有'has_many:tags'關係,在'create'和'update'操作中你可以做一些類似'object_params(:my_inputs).each {| name | @ object.tags << Tag.find_by name:name} if object_params(:my_inputs).present?'。 –