0

我正在尝试在带有导轨的视图中使用同一类的多个实例。基本上我需要显示一个带有所有属性的分支,并且在同一页面中我有一个 form_for 需要一个空的分支对象。问题是当我在控制器“@newBranch”中创建空分支实例时,视图无法再访问第一个

这是我在控制器中所做的:

def show
  @customer = Customer.find(params[:id])
  @branches = @customer.branches
  @newBranch = @customer.branches.new          #this is for the form_for
  @newContact = @newBranch.build_contact       #this is for the fields_for    
end

如果我尝试使用集合@branches 的单个项目,例如:

<div class = "branch_container">
  <%= render :partial => "customers/branch", :collection => @branches %>
</div>

然后在分支部分内:

<%= branch.contact.name %>

我有消息:

“nil:NilClass 的未定义方法‘名称’”

所有模型关联都可以正常工作,如果我不实例化 @newBranch 和 @newContact,问题就会消失。

基本上我需要在同一个视图中使用同一类的两个实例(例如一个部分中的“@branches”和另一个部分中的“@newBranch”)。

有什么解决办法?谢谢你。

4

2 回答 2

0

将这些实例作为本地变量提供:

 <%= render :partial => "customers/branch", :collection => @branches, :locals => {:branch => @branch, :customer => @customer} %>

哎呀,读得不好。对于一个新的分支,没有设置联系方式,所以为零。只需检查这种情况。

<% if branch.contact %>
_Your code_
<% else %>
No contact assigned
<% end %>
于 2012-08-22T20:18:14.540 回答
0

最后,我通过以下方式在表单内的视图中创建了@newBranch 和@newContact:

<%= form_for(newBranch = Building.new, :html => { :multipart => true }) do |building_form| %>
    <% newBranch.build_contact %>
    etc... etc...
于 2012-08-27T16:52:40.953 回答