轨道上的ruby中的类变量未初始化错误

时间:2013-06-08 09:29:01

标签: ruby-on-rails ruby class variables initialization

以下是代码:

class MulticastController < ApplicationController
    @@groups=Array.new
    @@groups=[]

    @@group_name=Array.new
    @@group_name=[]

    def getResults
        @@groups
        @@group_name
        if request.post?

             if params[:creategroup] #makes a new group
                  @@groups << searchHash
                  @@group_name << params[:groupname]

                  if @@groups.size>5
                      @@groups[0].delete
                      @@group_name[0].delete
                  end

             end

            if params[:displaygroup] 
                @@group_name.each_with_index do |gr,i|
                if(gr==params[:inputgroupname])
                    @results=Person.where(@@groups[i]).to_a
                    render :new_results, :layout => false
                end
            end
    end

在视图部分我有 -

        <div class="span6 service">
            <legend>Groups</legend>
            <% group_name.each do|grp|%>
                <%= grp %><br>
            <%end %><br><br>
            <input type="hidden" name="displaygroup" value="1">
            <div>
                <input type="text" name="inputgroupname" value="inputgroupname">
            </div>

我不知道该怎么做,它在ActionView :: CompiledTemplates错误中给了我一个“未初始化的类变量@@ group_name”。

我希望变量group和group_name对所有多播实例都是通用的。卡住。

1 个答案:

答案 0 :(得分:5)

def getResults
        @@groups ||= []
        @@group_name ||= []

而不是

def getResults
        @@groups
        @@group_name

运算符||=将初始化您的变量,但前提是它尚未初始化。

请听Ivan Shamatov关于代码风格和模式的评论。