我正在构建一个动态表单构建器。我有一个我似乎无法解决的问题。
所以我有一个名为“表单”的数据库表 表格可以有“字段”..
问题在于,当用户创建新的“字段”(单击添加字段)时,它应该为该字段ajax新字段。
问题是我不能只做这样的事情:
<%= Form.fields_for Field.new do |field| %>
<%= field.text_field :name%>
<% end %>
有人有想法吗?是的我看看有轨电视,是的我用谷歌搜索,是的,我在github上找到了“复杂形式”的回购。
但是没有运气(还)
答案 0 :(得分:6)
如果你想要一个全javascript方法(而不是调用你的服务器来产生字段名称),那么基本上你只需要为任何新字段增加字段名称。
例如,如果你有
class Form < ActiveRecord::Base
has_many :fields
accepts_nested_attributes_for :fields
并且表单中的HTML有一个输入字段,类似于
<label for="form_fields_attributes_0_name">
<input id="form_fields_attributes_0_name" name="form[fields_attributes][0][name]" type="text" />
然后你需要写一些javascript来使它看起来像
<label for="form_fields_attributes_1_name">
<input id="form_fields_attributes_1_name" name="form[fields_attributes][1][name" type="text" />
您可以执行类似
的操作$('#form_fields_attributes_1_name').attr('id').split('_');
和
$('#form_fields_attributes_1_name').attr('name').split(/\]\[/);
获得这些数字。