2017-06-02 9 views
0

私はFileSearchable.new(current_user, params[:keyword]).callを使用して、既存のクラスを呼び出そうとしましたが、私はエラーを取得しています、undefined method 'where' for nil:NilClassattr_accessorを使用してクラスにインスタンス変数が設定されていないのはなぜですか?

my_folders = my_folders.where("name ILIKE ?", filter) unless filter.blank?上のクラスでは、私が my_folders変数が設定されていない理由はわからない

class FileSearchable 

    attr_accessor :user, :my_files, :my_folders, :shared_folders, :shared_files, :filter 

    def initialize(user, filter) 
    @user = user 
    @my_folders = user.folders 
    @my_files = user.user_documents 
    @shared_folders = user.shared_folders 
    @shared_files = user.user_documents 
    @filter = filter 
    end 

    def apply_search_params 
    my_folders = my_folders.where("name ILIKE ?", filter) unless filter.blank? 
    end 
end 

を下回っています。

答えて

2

非常に一般的な問題です。アクセサーを陰にするローカル変数my_foldersを作成します。明示的にメソッドを呼び出します。

def apply_search_params 
    self.my_folders = my_folders.where("name ILIKE ?", filter) unless filter.blank? 
    end 

、または直接インスタンスVARを割り当てる(あなたが初期化子で行うように)

def apply_search_params 
    @my_folders = my_folders.where("name ILIKE ?", filter) unless filter.blank? 
    end 

しかし、このややattr_accessorの目的に反し。なぜ作家を生成し、それを使用しないのですか?

+0

mg。ああ、神様。ああ、神様。私は今朝目が覚めたときに頭を打ったと思う。 –

関連する問題