1

我的视图中有一个循环,它呈现许多部分:每个部分都是一个简单的切换,用于对记录执行保存/取消保存操作。每个部分使用 javascript 切换布尔字段,然后更新自身,控制器通过说:

$ controller
render :partial => "save_unsave_buttons", :locals => {:matching => @matching}, :layout => false

# view    
<div id=<%= "save#{match.id}" -%>>
<%= render :partial => "save_unsave_buttons", :locals => {:matching => match} %>
</div>

当控制器渲染部分 save_unsave_buttons 时,它不会渲染到正确的 div;它只是更新它找到的第一条记录的部分。如何要求控制器将 save_unsave_buttons 部分呈现给具有正确 ID 的 div?

谢谢!

4

1 回答 1

0

仅查看您为问题提供的少量信息,我猜代码中的罪魁祸首是div标签。

div标签应该在部分内。

编辑:您的代码所做的是创建一个div带有 id的单个save(the first match.id)并在其中呈现部分。如果我理解正确,你需要一个divfor each match。为此,它div本身应该在部分之内。

所以将 传递match.id给 a 中的部分collection。你的观点应该是:

# view    

<%= render :partial => "save_unsave_buttons", :locals => {:matching => match, :collection => {@match_id => match.id} } %>

并在您的部分_sav_unsave_buttons.html.erb 中

<% content_tag :div, id => "save#{@match_id}" do %>

     #YOUR CODE GOES HERE!

<% end -%>
于 2010-06-19T04:23:26.003 回答