在使用对象集合时渲染部分时形成空白。救命!

时间:2010-06-07 18:51:36

标签: ruby-on-rails forms partial

好吧,我知道我的头衔有点晦涩,但最能说明我遇到的问题。

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

由于用户在行中显示,我使用partial来呈现数据和表单(最初将由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,并且只有最后一个用户表单实际上填充了值。

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

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