2015-04-25 68 views
1

我有一張遊覽表(以及允許多個景點單次遊覽的遊覽表)。在我的新建/創建表單中,我試圖在巡視中添加多個景點。我這樣做的方式是使用jQuery,將輸入表單的所有值作爲單個字符串「加入」,並將其設置爲單個隱藏字段的值。我迷路了,一旦它遇到了模型,然後將每個模型添加到表格中,如何展開它。有任何想法嗎? index.html.erb在軌道中傳遞隱藏字段

<div class="input_fields_wrap"> 
    <button class="add_field_button">Add More Sights</button> 
     <%= f.label :sights %> 
    <input type="text" class="sight_field"> 
</div> 
<div> 
<%= f.hidden_field :sights %> 
</div> 

回答

2

tour.js

$("#new_tour").on("submit", function(event){ 
    event.preventDefault(); 
    var inputs = $.map($(".sight_field"), function(input_element){ 
     return input_element.value; 
    }); 
    var inputs_joined = inputs.join("|"); 
    $(":hidden").val(inputs_joined); 
}); 

一部分與你不需要做這種事情的軌道。

在你的字段周圍創建一個適當的表單,並讓它提交。在你的控制器中,所有的變量都在params-hash中。例如。

params[:sights] 

如果它變得複雜,你可以擁有的東西像

<input type="hidden" name="seeing[paris][sight]" value="fine" /> 
<input type="hidden" name="seeing[munich][sight]" value="fantastic" /> 

這將導致在控制器

params[:seeing][:paris][:sight] 
params[:seeing][:munich][:sight] 

如果這是出於某種原因不可行,你也可以做這樣的事情:

<input type="hidden" name="sights" value="fine, fantastic, ok" /> 

而在控制器中

all_sights = params[:sights].split(',') 

這將是你的景點數組。

+0

安德烈亞斯,你的意思是我不需要「加入」?只需將視線作爲單個隱藏字段中的散列,軌道就會理解我正在嘗試擁有多個該屬性? – nonegiven72

+0

我已更新我對您評論的回答。我知道,你的意思是把這些東西放在一個價值中,但是如果你願意的話,可以這樣試試。它更加清晰,您可以立即獲得訂單和可讀性。 –

+0

謝謝安德烈亞斯。會投票給你,但我需要15代表:-(。 – nonegiven72