使用ajax rails fields_for

时间:2010-10-27 13:14:12

标签: ruby-on-rails forms

我正在构建一个动态表单构建器。我有一个我似乎无法解决的问题。

所以我有一个名为“表单”的数据库表 表格可以有“字段”..

问题在于,当用户创建新的“字段”(单击添加字段)时,它应该为该字段ajax新字段。

问题是我不能只做这样的事情:
<%= Form.fields_for Field.new do |field| %>
  <%= field.text_field :name%>
<% end %>

有人有想法吗?是的我看看有轨电视,是的我用谷歌搜索,是的,我在github上找到了“复杂形式”的回购。

但是没有运气(还)

1 个答案:

答案 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(/\]\[/);

获得这些数字。

这是example重构的here.