0

好吧,我知道我的标题有点晦涩,但它最能描述我遇到的问题。

本质上,我有一个用户列表,并且希望能够使用 AJAX 在线编辑他们的信息。

由于用户显示在行中,我使用部分来呈现数据和表单(最初将由 ajax 隐藏),但是,当当前呈现行时,只有最后一项填充了表单的字段。

我怀疑这与所有表单字段都具有相同的 id 并且混淆 DOM 的事实有关。但我不知道如何确保 id 是唯一的。

这是一个小例子:

在我看来:

<%= render :partial => 'shared/user', :collection => @users %>

我的部分(分解为表单)注意到我使用的是局部变量“user”

<% form_for user, :html => {:multipart => true} do |f| -%>
<%= f.label :name, "Name*" %>
<%= f.text_field :title, :class => "input" %>
<%= f.label :Address, "Address" %>
<%= f.text_field :address, :class => "input" %>
<%= f.label :description, "Description*" %>
<%= f.text_area :description, :class => "input" %>
<% end -%>

当呈现 html 时,每个表单都有一个唯一的 id(用于用户的 id),但元素本身都具有相同的 id,并且实际上只有最后一个用户表单被填充了值。

有没有人有任何想法?:)

提前致谢!

4

1 回答 1

1

好吧,在吃了一些午餐并恢复了一些脑细胞之后,(在谷歌的帮助下)我想出了这个。

将集合传递给像这样的部分时:

<%= render :partial => 'shared/user', :collection => @users %>

Rails 创建了一个计数器变量,您可以使用它以“variable_counter”的形式为表单定义一个索引:

<% form_for user, :index => user_counter, :html => {:multipart => true} do |f| -%>

这将索引号添加到表单 id 以及所有字段 id 并解决了我的小问题。:)

我希望这可以帮助其他人解决这个问题。:)

于 2010-06-07T20:14:17.767 回答