本周,我们看到了 edge Rails 中有 35 次提交 – 尽管很多是 bug 修复和一些小改动。这里是近期一些重要改动的一次预览。
Rails 现在可以根据您设置的 locale 提供本地化视图。例如,假设您有一个 Posts 控制器和一个 show action。默认情况下,这将渲染 app/views/posts/show.html.erb。但是,如果您设置 I18n.locale = :da,它将渲染 app/views/posts/show.da.html.erb。如果本地化模板不存在,则会使用未装饰的版本。Rails 还包括 I18n#available_locales 和 I18n::SimpleBackend#available_locales,它们会返回当前 Rails 项目中可用的翻译数组。
MySQL 在其连接中支持一个 reconnect 标志 – 如果设置为 true,则在连接丢失时,客户端会尝试重新连接到服务器,然后才放弃。您现在可以在 database.yml 中为您的 MySQL 连接设置 reconnect = true,从而使 Rails 应用程序获得此行为。默认值为 false,因此现有应用程序的行为不会改变。
为了让在 JRuby 上使用 Rails 的人更加轻松,Active Record 现在包含了一些可通过 JDBC 访问的数据库的测试任务:Derby、H2、hsqldb、MySQL、PostgreSQL 和 sqlite3(如您所知,后三个也可通过非 JDBC 连接获得)。您需要安装数据库、activerecord-jdbc-adapter gem 以及您正在测试的数据库的特定 activerecord-jdbcdatabase-gem。然后,您可以像这样运行测试:jruby -S rake test_jdbcmysql(当然,其他适配器也有类似的测试)。
这个功能最初出现在几周前,但由于初始实现存在一些问题而被回滚。幸运的是,这些问题已得到解决,Rails 2.3 将自带 HTTP Digest 认证的支持。Ryan Daigle 发布了一些 示例代码。
Action View 已经有许多辅助方法来帮助生成 select 控件,但现在又多了一个:grouped_options_for_select。这个方法接受一个字符串数组或哈希,并将其转换为一个包含 option 标签的字符串,这些标签被 optgroup 标签包裹。例如
grouped_options_for_select([["Hats",
["Baseball Cap","Cowboy Hat"]]],
"Cowboy Hat", "Choose a product...")
返回
<option value="">Choose a product...</option>
<optgroup label="Hats">
<option value="Baseball Cap">Baseball Cap</option>
<option selected="selected" value="Cowboy Hat">
Cowboy Hat
</option>
</optgroup>