Ruby on rails Rails-会话请求为零错误

Ruby on rails Rails-会话请求为零错误,ruby-on-rails,Ruby On Rails,我有一个方法,我想执行一些搜索逻辑,然后保存一个搜索对象,该对象具有搜索字符串和执行搜索的人的用户id 否则,搜索/保存逻辑似乎工作正常,但当我尝试获取当前用户(使用应用程序控制器的方法)时,它会抛出与会话有关的运行时错误: ActionController::Metal#session delegated to @_request.session, but @_request is nil: #<SearchController:0x1038e32e0 @action_has_layou

我有一个方法,我想执行一些搜索逻辑,然后保存一个搜索对象,该对象具有搜索字符串和执行搜索的人的用户id

否则,搜索/保存逻辑似乎工作正常,但当我尝试获取当前用户(使用应用程序控制器的方法)时,它会抛出与会话有关的运行时错误:

ActionController::Metal#session delegated to @_request.session, but @_request is nil: #<SearchController:0x1038e32e0 @action_has_layout=true, @view_context_class=nil, @_status=200, @_headers={"Content-Type"=>"text/html"}>
这是我调用方法的pages控制器:

class PagesController < ApplicationController

...

def search

    searchcontrol = SearchController.new        

    @results = searchcontrol.factualsearch(params[:search])

end

...
class PagesController

end

这并不是解决这个问题的直接方法,但我可以通过让函数在搜索查询之外接受用户来绕过它,而不是试图从内部调用当前的用户方法。调用操作的类可以很好地访问当前的用户方法

def current_user
    return unless session[:user_id]
    @current_user ||= User.find_by_id(session[:user_id])
end

helper_method :current_user
class PagesController < ApplicationController

...

def search

    searchcontrol = SearchController.new        

    @results = searchcontrol.factualsearch(params[:search])

end

...