2011-08-25 36 views
2

我的模型有四個字段。因此,對於數據錄入我通常會做這樣的事情如何從rails中的text_area填充多個字段?

<%= form_for @user do |f| %> 
    <p> 
    <%= f.label :field1 %><br /> 
    <%= f.text_field :field1 %> 
    </p> 
    <p> 
    <%= f.label :field2 %><br /> 
    <%= f.text_field :field2 %> 
    </p> 
    <p> 
    <%= f.label :field3 %><br /> 
    <%= f.text_field :field3 %> 
    </p> 
    <p> 
    <%= f.label :field4 %><br /> 
    <%= f.text_field :field4 %> 
    </p> 
    <p class="button"><%= f.submit %></p> 
    <% end %> 

我想雖然創建一個text_area一個視圖,使大量數據輸入。

這個想法是粘貼多行,每行包含四個用逗號分隔的字段到text_area中。

在提交我會然後將數據推入數據庫。

這樣的表格會是怎樣的?

我在哪裏解析text_area的內容以及如何保存數據?

感謝 托馬斯

附:雖然每個人都在想要回復什麼,但我想知道一個計算列是否會成爲解決方案。我的意思是這裏沒有什麼可以計算的,但至少我可以用模型中的字段創建一個表單,然後將數據分割到其他字段。

回答

3

所有你需要的是一個虛擬屬性。 here有一個非常有用的導軌。

基本上,你會在你的模型中添加一個字段,說叫mass_data,併爲其創建getter和setter方法進行轉換的,並從對應於模型中的mass_data格式四個獨立的領域。然後,您可以在該屬性的表單中添加文本字段,就像它是一個真實屬性一樣。

即在你的控制器,這樣做:

def mass_data 
    [#{field1},#{field2},#{field3},#{field4}].join(',') 
end 

def mass_data=(data) 
    split=mass_data.split(',') 
    self.field1=split.first 
    ... 
    self.field4=split.last 
end 

,然後只是一個文本字段添加到表單視圖:

<%= f.text_field :mass_data %>

+0

非常感謝ANKIT,這是工作就好了!我留下的唯一問題是,如果我可以通過一次提交創建多個記錄?我想在text_area中粘貼10行,每行由4個字段組成。當我點擊提交按鈕時,應用程序應該爲文本區域中的每一行添加一條記錄,即10行,10條記錄。謝謝Thomas – Thomas

+0

您是否管理多記錄輸入?我需要完全一樣。 – Raoot

+0

我還沒有嘗試過這一點,但我認爲你可以創建另一個虛擬屬性,其中setter將10行分析爲10個獨立的mass_data記錄。 –

相關問題