Sat*_*shi 9 regex routes ruby-on-rails regex-negation
我正在研究Rails 2.3.11.如果我有一个像http://www.abc.com/users/efjson这样的网址,我希望id为'ef',预期格式为'json'.有人可以建议一种方法来做到这一点.谢谢!
and*_*vom 10
由于:格式约定,Rails将解析所有参数而不带任何点.如果需要,您可以使用带点的路径参数:
# You can change the regex to more restrictive patterns
map.connect 'users/:id', :controller => 'users', :action => 'show', :id => /.*/
Run Code Online (Sandbox Code Playgroud)
但由于'*'和'+'正则表达式通配符都是贪婪的,它将完全忽略(.:格式)参数.
现在,如果你绝对需要在用户名中加点,那么有一个伪解决方法可以帮助你:
map.connect 'users/:id:format', :controller => 'users', :action => 'show', :requirements => { :format => /\.[^.]+/, :id => /.*/ }
map.connect 'users/:id', :controller => 'users', :action => 'show'
Run Code Online (Sandbox Code Playgroud)
缺点是你必须在:格式正则表达式中包含点,否则它将被用户名表达式捕获.然后你必须在控制器中处理虚线格式(例如:.json).
| 归档时间: |
|
| 查看次数: |
2622 次 |
| 最近记录: |