`
ZoOL
  • 浏览: 30310 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rails中处理复数单词的pluralize方法

阅读更多

 

原帖

 

缘由

 

在日常开发中,有时候会碰到要将一些单词按照它的数量来按单复数显示

 

所幸rails已经考虑到了这一点,在ActionView中有一个方法

 

 

There are <%= pluralize @user.size, "user" %>.  

 

 

例子

 

 pluralize(1, 'person') 
 # => 1
 person  pluralize(2, 'person') 
 # => 2 people  
 pluralize(3, 'person', 'users') 
 # => 3 users  
 pluralize(0, 'person') 
 # => 0 people 

 

 

深入研究pluralize方法:

 

   def pluralize(count, singular, plural = nil)

  "#{count || 0} " + ((count == 1 || count =~ /^1(\.0+)?$/) ? singular : (plural || singular.pluralize))
end 
 

可以看到英语单词的单复数是由String#pluralize方法提供,这个是由ActiveSupport::Inflector提供的一个扩展方法

在rails console里运行

 

 

"post".pluralize 
# => "posts" 
"octopus".pluralize 
# => "octopi"
"sheep".pluralize 
# => "sheep" 
"words".pluralize 
# => "words" 
"CamelOctopus".pluralize 
# => "CamelOctopi" 

 

 

继续研究ActiveSupport::Inflector.pluralize

 

 

def pluralize(word) 
  result = word.to_s.dup  
  if word.empty? || inflections.uncountables.include?(result.downcase) 
    result
  else
     inflections.plurals.each { |(rule, replacement)| 
       break if result.gsub!(rule, replacement)
     }
     result
  end
end 

 可以看到单词的单复数的匹配设置是在inflection.pluarls里,那要如何修改呢? rails已经有一个配置文件了,

 

 在/paht/to/site/config/initializers/inflections.rb

 

 

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural /^(ox)$/i, '\1en' 
  inflect.singular /^(ox)en/i, '\1' 
  inflect.irregular 'person', 'people'
  inflect.uncountable %w( fish sheep ) 
end
 

plural和singual是匹配单复数的通用匹配规则,irregular是处理那些特殊单词变化,uncountbale就是那些单复数一样的单词

1
0
分享到:
评论

相关推荐

    Ruby on Rails中文指南

    在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...

    Rails中上传文件保存中文文件名乱码

    在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...

    Ruby On Rails中文教材(PDF)

    7. **Helper方法**:Rails提供了许多内置助手方法,帮助开发者在视图中处理复杂的逻辑和呈现数据。 8. **ActiveSupport库**:包含许多有用的工具方法和实用程序,如时间格式化、字符串操作等,大大提升了开发效率。...

    Ruby on Rails:Rails中的表单处理.docx

    Ruby on Rails:Rails中的表单处理.docx

    rails指南 中文版

    1. **ActiveRecord**:这是Rails框架中的ORM(Object-Relational Mapping)组件,它负责处理数据库操作。通过ActiveRecord,开发者可以使用面向对象的方式来操作数据,而无需编写SQL语句。 2. **ActionController**...

    Rails 中页面中常用函数

    9. **`pluralize`和`humanize`**:前者用于处理数量词的单复数形式,如`pluralize(@items.count, 'item')`。后者用于将数据库列名转化为更适合显示给人的形式,如`item.name.humanize`。 10. **`time_ago_in_words`...

    使用Aptana+Rails开发Rails Web应用(中文)

    模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    rails中使用javascript日期控件

    在Rails开发中,JavaScript日期控件常常用于提升用户体验,让用户能方便地选择日期,而无需手动输入。这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    Rails的中文乱码问题

    在提供的“ruby-refm.chm”文件中,可能包含了Ruby语言和相关工具的参考手册,这将有助于理解Ruby的基础语法和Rails框架的使用,包括如何处理字符串和编码问题。查阅此手册,可以找到关于字符串操作、编码转换等相关...

    Rails项目源代码

    这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...

    中文版rails教程

    Rails提供了许多辅助方法和过滤器,方便开发者处理请求和响应。 **Rails开发流程** 在Rails开发中,通常遵循以下步骤: 1. **生成资源(Generating Resources)**:使用`rails generate`命令可以快速创建模型、...

    关于rails学习中分页的示例

    在Rails开发中,分页是常见的功能,用于处理大量数据并优化用户体验。当我们从数据库查询数据时,一次性加载所有记录可能会导致性能问题,尤其是当数据量庞大时。因此,分页成为了解决这一问题的关键技术。这篇关于...

    敏捷Rails中文教程

    - **异常处理**:Ruby的异常处理机制允许开发者优雅地捕获和处理程序中的错误。 - **多线程与并发**:Ruby支持多线程编程,但需要注意的是,由于全局解释器锁(GIL)的存在,真正的并行执行在默认的Ruby实现中受限。 ...

    rails敏捷开发的购物车系统

    在这些方法中,处理验证、调用模型方法并重定向到合适的页面。 在安全方面,确保只有授权用户才能修改自己的购物车。这可以通过使用Rails的身份验证机制,如Devise或Authlogic,实现用户登录和会话管理。 最后,...

    Ruby on Rails中MVC结构的数据传递解析

    在Rails的MVC架构中,为了提高代码的复用性和清晰度,开发者应当遵循一些约定,比如模型名应为单数形式,而对应的表名应为复数形式。这些约定减少了开发者需要编写的配置代码量,同时也有助于在团队内部形成统一的...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

Global site tag (gtag.js) - Google Analytics