原帖
缘由
在日常开发中,有时候会碰到要将一些单词按照它的数量来按单复数显示
所幸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就是那些单复数一样的单词
分享到:
相关推荐
在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...
在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...
7. **Helper方法**:Rails提供了许多内置助手方法,帮助开发者在视图中处理复杂的逻辑和呈现数据。 8. **ActiveSupport库**:包含许多有用的工具方法和实用程序,如时间格式化、字符串操作等,大大提升了开发效率。...
Ruby on Rails:Rails中的表单处理.docx
1. **ActiveRecord**:这是Rails框架中的ORM(Object-Relational Mapping)组件,它负责处理数据库操作。通过ActiveRecord,开发者可以使用面向对象的方式来操作数据,而无需编写SQL语句。 2. **ActionController**...
9. **`pluralize`和`humanize`**:前者用于处理数量词的单复数形式,如`pluralize(@items.count, 'item')`。后者用于将数据库列名转化为更适合显示给人的形式,如`item.name.humanize`。 10. **`time_ago_in_words`...
模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...
标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...
在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...
在Rails开发中,JavaScript日期控件常常用于提升用户体验,让用户能方便地选择日期,而无需手动输入。这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
在提供的“ruby-refm.chm”文件中,可能包含了Ruby语言和相关工具的参考手册,这将有助于理解Ruby的基础语法和Rails框架的使用,包括如何处理字符串和编码问题。查阅此手册,可以找到关于字符串操作、编码转换等相关...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
Rails提供了许多辅助方法和过滤器,方便开发者处理请求和响应。 **Rails开发流程** 在Rails开发中,通常遵循以下步骤: 1. **生成资源(Generating Resources)**:使用`rails generate`命令可以快速创建模型、...
在Rails开发中,分页是常见的功能,用于处理大量数据并优化用户体验。当我们从数据库查询数据时,一次性加载所有记录可能会导致性能问题,尤其是当数据量庞大时。因此,分页成为了解决这一问题的关键技术。这篇关于...
- **异常处理**:Ruby的异常处理机制允许开发者优雅地捕获和处理程序中的错误。 - **多线程与并发**:Ruby支持多线程编程,但需要注意的是,由于全局解释器锁(GIL)的存在,真正的并行执行在默认的Ruby实现中受限。 ...
在这些方法中,处理验证、调用模型方法并重定向到合适的页面。 在安全方面,确保只有授权用户才能修改自己的购物车。这可以通过使用Rails的身份验证机制,如Devise或Authlogic,实现用户登录和会话管理。 最后,...
在Rails的MVC架构中,为了提高代码的复用性和清晰度,开发者应当遵循一些约定,比如模型名应为单数形式,而对应的表名应为复数形式。这些约定减少了开发者需要编写的配置代码量,同时也有助于在团队内部形成统一的...
- 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...