2012-05-06 48 views
8

對不起,如果這已被問及在全面回答。不知道我是否正在用正確的Rails爲這個問題發言。如何使用數據庫表中的動態表單字段創建Rails form_for?

我想根據數據庫中存儲的字段創建一個Rails表單。以下是我的模型到目前爲止的樣子。

class Field < ActiveRecord::Base 
    belongs_to :form 
end 

class Form < ActiveRecord::Base 
    has_many :fields 
end 

該字段模型是非常簡單的截至目前與類型:字符串和必需:布爾列。名稱是我想要創建的控件的名稱(文本框,複選框,單選按鈕)。理想的情況是我想要做這樣的事情:

<%= form_for [something here] do |f| %> 
    <% @fields.each do |field| %> 
    <%= field.type %><br /> 
    <% end %> 
<% end %> 

我與尋找一種方法以將正確地呈現field.type標籤,以取代線<%= field.type%>掙扎。

這可能嗎?使用存儲字段類型和值的字段模型中的有效載荷列作爲json/xml會更好嗎?

+1

的類型是:字符串把它作爲Rails的助手方法(如,radio_button )?在這種情況下,您可以執行'f.send(field.type,field.name)'。如果沒有,只需將你的類型值映射到Rails助手,然後發送正確的方法。 – TuteC

+0

目前我沒有用輔助方法保存。我對這個概念很陌生,但這聽起來正是我想要做的!會f.send()去標籤?例如,<%= f.send(field.type,field.name)%>。謝謝。 –

+0

@TuteC提到應該工作 – bruno077

回答

6

像@TuteC提到的,你可以使用的方法。發送動態調用每個字段,如果要保存的類型:

<%= form_for [something here] do |f| %> 
    <% @fields.each do |field| %> 
    <%= f.send(field.type.to_sym, field.name) %><br /> 
    <% end %> 
<% end %> 
+0

這工作感謝幫助布魯諾和@TuteC。 –

+0

你是男人:)感謝哥們 –

相關問題