ruby-on-rails - 在Rails路线ID中有一个点

标签 ruby-on-rails regex routes regex-negation

我正在使用Rails 2.3.11。如果我有一个像http://www.abc.com/users/e.f.json这样的URL,我希望ID为'e.f',预期格式为'json'。有人可以建议一种方法吗?
谢谢!

最佳答案

由于:format约定,Rails将解析所有参数而没有任何点。如果需要,可以使用route parameters with dots:

# You can change the regex to more restrictive patterns
map.connect 'users/:id', :controller => 'users', :action => 'show', :id => /.*/

但是由于'*'和'+'正则表达式通配符都是贪婪的,因此它将完全忽略(。:format)参数。

现在,如果您绝对需要在用户名中包含点,那么有一种伪替代方法可以帮助您:
map.connect 'users/:id:format', :controller => 'users', :action => 'show', :requirements => { :format => /\.[^.]+/, :id => /.*/ }
map.connect 'users/:id', :controller => 'users', :action => 'show'

不利之处在于您必须在:format regex中包含点,否则用户名表达式将捕获该点。然后,您必须在 Controller 中处理点分格式(例如:.json)。

关于ruby-on-rails - 在Rails路线ID中有一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6908001/

相关文章:

ruby-on-rails - ruby 的 Timestamp 类是否等同于 PostgreSQL 的时间戳?

javascript - Rails 文件下载和查看更新 - Howto?

javascript - 任何人都可以帮助我使用 gregjacobs/Autolinker.js 的工作示例吗

regex - sed - 匹配模式的反向引用不起作用

ruby-on-rails-3 - Rails 将路由与 slugs 匹配,而无需在链接中使用 ID

ruby-on-rails - 没有路线匹配 [PUT]。如何正确走线?

ruby-on-rails - "Rails Way"的 `update` 是否存在根本缺陷?

javascript - 试图用表情代替角色,功能却变得疯狂

ruby-on-rails - Rails 重定向不工作?

ruby-on-rails - 如何让我的 rails 应用程序显示 url 作为用户名?