获取错误:ActiveRecord_Associations_CollectionProxy

时间:2015-09-21 05:10:53

标签: ruby ruby-on-rails-4

俱乐部是我存储学生班级信息的模型。

我有以下关联:

    class Club < ActiveRecord::Base

      has_many :mcqs
    end

    class Mcq < ActiveRecord::Base

    #validation
    validates :topic, presence: true,length: { minimum: 5 }
    validates :club, presence: true

    #association
    belongs_to :user
    belongs_to :club
    end

这是我的俱乐部控制员 -

class ClubsController < ApplicationController

def student_show_index
    @club = current_user.clubs
  end

  def student_show_topic
    @club = current_user.clubs
    @mcq = @club.mcqs
  end

end

我只想将特定俱乐部的所有MCQ打印给学生。

这是我的观点,显示了MCQ的主题(student_show_topic)。

    <%= render 'assessment/type' %>
<h1>List of Topics</h1>
<div class="main-cont">
    <div class="stream-cont">
        <div class="stream-cont">
        <% @mcq.each do |f| %>
            <div class="feed-cont-title all-header">
                <tr>
                    <td><%= f.topic %></td>
                </tr>
            </div>
        <% end %>
    </div>
</div>

是关联问题。我的俱乐部模型无法访问mcq模型。

这是我的错误消息。

NoMethodError in ClubsController#student_show_topic
undefined method `mcqs' for #<Club::ActiveRecord_Associations_CollectionProxy:0x007fb031e0cf48>
Extracted source (around line #81):

79 def student_show_topic
80  @club = current_user.clubs
81  @mcq = @club.mcqs
82 end
83
84 end

之后我使用@mcq = @ club.first.mcqs

显示该俱乐部的所有Mcq。但在我的俱乐部表中,我将俱乐部指定为

  1. 9-物理
  2. 9化学
  3. 所以我想在点击9-physics主题时只显示物理mcq主题等等。

1 个答案:

答案 0 :(得分:1)

看你@club不是单个对象,它是对象的集合,你不能用mcqs调用@club

但你可以致电@club.first.mcqs