find_users 的未定义局部变量

Posted

技术标签:

【中文标题】find_users 的未定义局部变量【英文标题】:undefined local variable for find_users 【发布时间】:2013-04-24 15:26:55 【问题描述】:

我正在关注 railscast 111 进行高级搜索。我得到一个未定义的局部变量或方法“find_users”。我一行一行地跟着它。不知道如何解决这个问题,因为我在搜索后得到了错误。它指向 Searches#show 中的 NoMethodError。任何帮助将不胜感激。

show.html:

搜索控制器:

  def new
    @search = Search.new
  end

  def create
    @search = Search.new(params[:search])
    if @search.save
      redirect_to @search
    else
      render 'new'
    end
  end

  def show
    @search = Search.find(params[:id])
    @users = @search.users
  end
end

搜索.rb:

  attr_accessible :age, :children, :ethnicity, :gender, :religion, :zip_code

  def users
    @users ||= find_users

    private

      def find_users
        users = User.order(:id)
        users = users.where(gender: gender) if gender
        users = users.where(zip_code: zip_code) if zip_code
        users = users.where(children: children) if children
        users = users.where(religion: religion) if religion
        users = users.where(ethnicity: ethnicity) if ethnicity
        users
      end
    end
    end

【问题讨论】:

【参考方案1】:

在您的search.rb 中,您必须添加方法find_users,如下所示:

def find_users
  User.find(:all, :conditions => conditions)
end

那么您还必须包含所有方法conditions 并指定它们。请关注railscast,非常明确。

【讨论】:

以上是关于find_users 的未定义局部变量的主要内容,如果未能解决你的问题,请参考以下文章

FastlaneCore::Helper::AppcenterHelper:Class (NameError) 的未定义局部变量或方法“所有者”

实际初始化的未初始化局部变量? [复制]

成员变量与局部变量

作用域,局部和全局变量

成员变量跟局部变量

javascript定义了一个全局变量,怎么在局部变量中修改该变量的值?