Rails如何在一个视图中使用同一类上的多个变量



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

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

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的未定义方法`name'"

所有的模型关联都很好,如果我不实例化@newBranch和@newContact,问题就会消失。

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

解决方案是什么?非常感谢。

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

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

哎呀,我读得不好。对于新分支,未设置contact,因此为nil。只是检查一下这种情况。

<% if branch.contact %>
_Your code_
<% else %>
No contact assigned
<% end %>

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

<%= form_for(newBranch = Building.new, :html => { :multipart => true }) do |building_form| %>
    <% newBranch.build_contact %>
    etc... etc...

最新更新