2016-02-26 53 views
0

我正在構建一個包含html表的頁面,用戶可以在表中選擇名稱和表格行中的內容。Rails - 如何將表單保存爲多個輸入的數據作爲散列

用戶將信息輸入到表單中,該表單將被解析爲散列並保存到數據庫中。

下面是一個示例,其中:key將是散列(表頭文本)的關鍵字,:value將是散列值(表列內容)中的值。

<%= form_for([@page]) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 

    <%= f.text_field :key1 %>  
    <%= f.text_field :value1 %> 

    <%= f.text_field :key2 %>  
    <%= f.text_field :value2 %> 

    <%= f.text_field :key3 %>  
    <%= f.text_field :value3 %> 

    <%= f.text_field :key4 %>  
    <%= f.text_field :value4 %> 

    <%= f.submit "Save" %> 

<% end %> 

我可以做一個has_many聯想到page DB一個新的數據庫表,並有存儲在該表中的信息。然後,當我需要渲染視圖時,可以將該數據重建爲散列。

但是,如果我可以將整個散列保存到page數據庫的列中,那麼每次有人訪問該頁面時都不必重建散列。

我正在努力想出如何在form_for中做到這一點。

第一個問題是它在page表中需要keyvalue列。一個簡單的解決方法是將所有輸入更改爲<%= f.text_field :html_table %>page表中的html_table列)。但是,它將無法區分哈希中的鍵和值。而且我也沒有辦法告訴它將這些信息放在一起,然後存儲到page表的html_table列中。

不知道這是否甚至是可能的事情,但在繼續構建has_many關聯表並設置它之前先詢問並不會有什麼不好。

回答

0

我對你的問題感到困惑。

難道你不能在你的控制器動作中建立這樣的哈希?

html_table = { 
    params[:key1] => params[:value1], 
    params[:key2] => params[:value2], 
    params[:key3] => params[:value3], 
    params[:key4] => params[:value4] 
} 

然後將其保存爲@page.html_table屬性。

編輯:

在這種情況下,形式沒有關於特定對象的attirbutes。因此,而不是使用form_for(Link),您應該使用form_tag(Link)。

例子:

<%= form_tag "/pages_controller/build_html_table" do %> 
    <%= text_field_tag "key1" %> 
    <%= text_field_tag "value1" %> 
    <%= submit_tag "Save" %> 
<% end %> 
+0

其可行的,但形式是什麼樣子? 'text_field:key1'沒有'f.'? – Rob

+0

@ user3234020是的,你應該使用不同的幫手。檢查編輯 – Harfangk

+0

好的,我明天會放棄它。 – Rob

相關問題