2

这是代码:

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>

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

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

4

1 回答 1

6

尝试

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

代替

def getResults
        @@groups
        @@group_name

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

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

于 2013-06-08T10:05:29.330 回答