如何使用数据库表中的动态表单字段创建Rails form_for?

时间:2012-05-06 12:52:23

标签: ruby-on-rails ruby

很抱歉,如果有人问过这个问题并在某处完整回答。不确定我是否正在使用正确的Rails搜索此问题。

我想根据存储在数据库中的字段创建一个Rails表单。这是我的模型到目前为止的样子。

class Field < ActiveRecord::Base
  belongs_to :form
end

class Form < ActiveRecord::Base
  has_many :fields
end

截至目前,字段模型非常简单,类型为:string和required:boolean columns。 Name是我要创建的控件的名称(textbox,checkbox,radiobutton)。理想情况下,我想做这样的事情:

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

我正在努力寻找替换线的方法&lt;%= field.type%&gt;使用可正确呈现field.type的标记。

这可能吗?我最好在字段模型中使用有效负载列,将字段类型和值存储为json / xml?

1 个答案:

答案 0 :(得分:6)

与@TuteC一样,如果要保存类型,可以使用.send方法动态调用每个字段:

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