Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中获得人类可读的类名?_Ruby On Rails_Ruby_Ruby On Rails 3_Humanize - Fatal编程技术网

Ruby on rails 如何在RubyonRails中获得人类可读的类名?

Ruby on rails 如何在RubyonRails中获得人类可读的类名?,ruby-on-rails,ruby,ruby-on-rails-3,humanize,Ruby On Rails,Ruby,Ruby On Rails 3,Humanize,我正在用Ruby 1.9.3和Rails 3.0.9构建一个应用程序 我有一个像下面这样的班级 module CDA class Document def humanize_class_name self.class.name.gsub("::","") end end end 我想要像“CDADocument”这样的类名 我的人性化类名方法是实现这一点的正确方法吗 或 Rails还有其他内置方法吗 我认为Rails可能有类似的功能,但是由于您想要的形式是独

我正在用Ruby 1.9.3和Rails 3.0.9构建一个应用程序

我有一个像下面这样的班级

module CDA
  class Document
    def humanize_class_name
      self.class.name.gsub("::","")
    end
  end
end
我想要像“CDADocument”这样的类名

我的人性化类名方法是实现这一点的正确方法吗


Rails还有其他内置方法吗

我认为Rails可能有类似的功能,但是由于您想要的形式是独特的,因此您必须自己设计方法。你定义它的位置是错误的。每节课你都必须这样做。相反,您应该在类中定义它

class Class
    def humanize_class_name
      name.delete(":")
    end
end
some_instance.class.humanize_class_name #=> the string you want


如果您使用的是
i18n
,则可以调用
Model.Model\u name.human
以获取本地化的模型名称

例如:
Event.model_name.human
返回我的本地化名称


文档:

FYI,
tr
gsub
@AndrewMarshall快3.5倍。我知道
tr
更快,但我不知道你可以用空字符串代替。谢谢。@Stefan我不知道那种方法。谢谢。
class Object
    def humanize_class_name
        self.class.name.delete(":")
    end
end
some_instance.humanize_class_name #=> the string you want