Ruby on rails 如何显示子记录列表?

Ruby on rails 如何显示子记录列表?,ruby-on-rails,activerecord,parent-child,partial-views,Ruby On Rails,Activerecord,Parent Child,Partial Views,我有一个帐户和场地表,其中一个帐户可以有许多场地 我将在帐户索引页面上显示所有帐户,并希望每个帐户都包含链接到它们的场馆名称 以下是我所拥有的: 帐户部分 -() ‘场馆/账户\场馆’,:collection=>@account.vinces%> 帐户/场地部分 我得到了这个错误: 账户中的命名错误#索引 nil:NilClass的未定义方法“Vinces” 提取的源(第12行附近): 12:“场馆/账户/场馆”, :collection=>@account.victions%> 任何帮

我有一个帐户和场地表,其中一个帐户可以有许多场地

我将在帐户索引页面上显示所有帐户,并希望每个帐户都包含链接到它们的场馆名称

以下是我所拥有的:

帐户部分


-()
‘场馆/账户\场馆’,:collection=>@account.vinces%>
帐户/场地部分


我得到了这个错误:

账户中的命名错误#索引

nil:NilClass的未定义方法“Vinces”

提取的源(第12行附近):

12:“场馆/账户/场馆”, :collection=>@account.victions%>

任何帮助都将不胜感激

编辑

财务主任

class AccountsController:场馆)
结束
结束
accounts index.html.erb


免费帐户
“免费帐户”:集合=>@accounts%>
保费帐户
“高级帐户”:集合=>@accounts%>

_free_account.html.erb


-()
所有者用户名: 业主电邮: ‘场馆/账户\场馆’,:collection=>@account.vinces%>
更新

如果我将部分调用更改为:

<%= render :partial => 'venues/account_venue', :collection => @accounts %>
'场馆/账户\场馆',:集合=>@accounts%>

帐户只需读取“test”,它加载时不会出错,但会显示单词test 4次(有4个帐户记录)。如果我添加一个新帐户记录,它会显示单词test 5次。

看起来您没有将
@帐户
分配给任何内容。这应该是免费的帐户吗?

您需要将@account设置为控制器中的某个值,并且该模型实例应该加入(或包括)场馆模型。像这样:

@account = Account.find(params[:id], :include => :venues)
编辑:我想您已经与多个客户建立了帐户和场馆模型,并且属于多个关系

编辑两个:我现在看到您正在尝试访问帐户#索引,在这种情况下,上面的代码应该更改为类似的代码(因为我们没有查看一个特定的帐户):

编辑三个:现在您已经发布了控制器和部分代码,有几件事情很突出;使用集合呈现分部时,分部中的结果对象从分部而不是集合中派生其名称。从:

当使用复数集合调用分部时,则 分部的单个实例可以访问 通过以分部名称命名的变量呈现的集合。“

在您的部分
\u账户\u vention.html.erb
中,您有
-这需要更改为

其次,在
\u free\u account.html.erb
中,您调用
account\u vention
partial,您指的是一个名为
@account
的集合对象-这是从哪里来的?由于
free\u帐户
partial也通过集合调用,因此您应该使用的对象将被称为
free\u帐户
——实际上,您在执行
操作时,在前面的同一部分中使用了此名称。因此,渲染部分调用应如下所示:

'场馆/账户\场馆',:收藏=>免费\账户.场馆%>


希望这有帮助

嗨,谢谢你的回复。我已经设置了一些关系,代码位给出了一个“找不到没有ID的帐户”错误。是的,很抱歉,请参阅上面的“编辑两个”-我没有发现您正在调用
index
方法,所以我假设
show
,它将有一个ID参数。另外,如果
@account
确实是一个集合,您应该将其重命名为
@accounts
,感谢您的额外输入,它仍然会给出原始错误tho.Oh以及views/accounts/index.html.erb的内容。谢谢
    class AccountsController < ApplicationController   
    load_and_authorize_resource  

      def index
        @accounts = Account.all(:include => :venues)
      end      
    end
<div id="narrow_container">
  <div class="free_accounts_container">
    <h2 class="show_orange">Free accounts</h3>  
    <%= render :partial => 'free_account', :collection => @accounts %>
  </div>

  <div class="premium_accounts_container">
    <h2 class="show_orange">Premium accounts</h3>
    <%= render :partial => 'premium_account', :collection => @accounts %><br><br>
  </div>

  <div class="clearall"></div>

  <div class="button">
    <%= link_to 'add account', new_account_path %>
  </div>
</div>
<%= link_to free_account do %>
  <% if free_account.role == "free" %>
    <div class="account_partial">

      <span class="account_header"><%= free_account.name %></span> - <span class="free_account_highlight">(<%= free_account.role %>)</span><br>

      <div class="owner_details">
        <span class="pre_account_highlight">Owners username:</span><span class="account_highlight"><%= free_account.user.username %></span>
        <span class="pre_account_highlight">Owners e-mail:</span><span class="account_highlight"><%= free_account.user.email %></span>
      </div>

      <div class="account_details">     
      </div>

      <%= render :partial => 'venues/account_venue', :collection => @account.venues %>
    </div>
  <% else %>         
  <% end %>
<% end %>
<%= render :partial => 'venues/account_venue', :collection => @accounts %>
@account = Account.find(params[:id], :include => :venues)
@accounts = Account.all(:include => :venues)