代码之家  ›  专栏  ›  技术社区  ›  Bhawan

在rails中将字符串转换为类名

  •  1
  • Bhawan  · 技术社区  · 5 年前

    我有个变数 handler 其价值可以是 flight_gds, flight_commission etc.

    classes 在我的申请中 FlightGds, FlightCommission 等等 module FlightManager 是的。

    我想根据处理程序的值执行类的函数。
    这个 函数名相同 在所有的班级里,只有 类名不同 这取决于 处理者。

    例如:
    如果处理程序名称为' flight_gds ,则函数为 FlightManager::FlightGds.calculate()

    我在尝试这样的事情:

    FlightManager::handler.camelize.calculate()
    

    但是我得到了 undefined method handler 错误。

    有什么办法吗?或者我应该 if/else 循环?

    1 回复  |  直到 5 年前
        1
  •  2
  •   mrzasa    5 年前

    你应该用 constantize 要基于字符串中的名称获取类,请执行以下操作:

    "FlightManager::#{handler.camelize}".constantize.calculate())