{"id":"c3e58661f9bdaccf","repo":"rails/rails","slug":"helper-must-be-a-string-symbol-or-module","errorCode":null,"errorMessage":"helper must be a String, Symbol, or Module","messagePattern":"helper must be a String, Symbol, or Module","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"actionpack/lib/abstract_controller/helpers.rb","lineNumber":43,"sourceCode":"      self._helpers = define_helpers_module(self)\n    end\n\n    def _helpers\n      self.class._helpers\n    end\n\n    module Resolution # :nodoc:\n      def modules_for_helpers(modules_or_helper_prefixes)\n        modules_or_helper_prefixes.flatten.map! do |module_or_helper_prefix|\n          case module_or_helper_prefix\n          when Module\n            module_or_helper_prefix\n          when String, Symbol\n            helper_prefix = module_or_helper_prefix.to_s\n            helper_prefix = helper_prefix.camelize unless helper_prefix.start_with?(/[A-Z]/)\n            \"#{helper_prefix}Helper\".constantize\n          else\n            raise ArgumentError, \"helper must be a String, Symbol, or Module\"\n          end\n        end\n      end\n\n      def all_helpers_from_path(path)\n        helpers = Array(path).flat_map do |_path|\n          names = Dir[\"#{_path}/**/*_helper.rb\"].map { |file| file[_path.to_s.size + 1..-\"_helper.rb\".size - 1] }\n          names.sort!\n        end\n        helpers.uniq!\n        helpers\n      end\n\n      def helper_modules_from_paths(paths)\n        modules_for_helpers(all_helpers_from_path(paths))\n      end\n    end\n","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/rails/rails/blob/817fc2a147c249180ee9b271c0e8d82d43457a3a/actionpack/lib/abstract_controller/helpers.rb#L25-L61","documentation":"Error \"helper must be a String, Symbol, or Module\" thrown in rails/rails.","triggerScenarios":"Thrown at actionpack/lib/abstract_controller/helpers.rb:43 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"817fc2a147c249180ee9b271c0e8d82d43457a3a","analyzedAt":"2026-08-04T20:52:19.892Z","schemaVersion":2}