Ruby on Rails中的类变量未初始化错误

use*_*096 2 ruby variables initialization ruby-on-rails class

这是代码:

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
Run Code Online (Sandbox Code Playgroud)

在意见部分,我有-

        <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>
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,它给我一个ActionView :: CompiledTemplates中的未初始化类变量@@ group_name。

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

sco*_*nes 6

尝试

def getResults
        @@groups ||= []
        @@group_name ||= []
Run Code Online (Sandbox Code Playgroud)

代替

def getResults
        @@groups
        @@group_name
Run Code Online (Sandbox Code Playgroud)

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

并且,请听听Ivan Shamatov关于代码样式和模式的评论。