Rails - 带"点"的参数(例如/google.com)

The*_*hts 18 ruby ruby-on-rails

如何强制Rails考虑一个带有值中的点的param,如google.com(例如/some_action/google.com)单个param而不是"id" => "google", "format"=> "com"

参数值应该是 "id" => "google.com"

Dam*_*IEU 30

默认情况下,动态段不接受点 - 这是因为点用作格式化路径的分隔符.但是,您可以向路由参数添加一些正则表达式要求.在这里,您想要允许参数中的点.

match 'some_action/:id' => 'controller#action', :constraints  => { :id => /[0-z\.]+/ }
Run Code Online (Sandbox Code Playgroud)

在rails 2.3中:

map.connect 'some_action/:id', :controller => 'controller', :action => 'action',  :requirements => { :id => /[0-z\.]+/ } 
Run Code Online (Sandbox Code Playgroud)

Relevent导轨部分


Ale*_*oVD 5

在Rails 4中,我使用了:

get 'operation/:p1/:p2', to: 'operation#get', constraints: { p1: /[^\/]+/, p2: /[^\/]+/ }
Run Code Online (Sandbox Code Playgroud)

它允许两个参数中的任何字符(“ /”除外)