Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails路由中强制使用尾部斜杠_Ruby On Rails_Relative Path_Rails Routing_Trailing Slash - Fatal编程技术网

Ruby on rails 在Rails路由中强制使用尾部斜杠

Ruby on rails 在Rails路由中强制使用尾部斜杠,ruby-on-rails,relative-path,rails-routing,trailing-slash,Ruby On Rails,Relative Path,Rails Routing,Trailing Slash,使用{:trailing_slash=>true}在链接中添加尾部斜杠非常简单,但这并不能说明用户是否键入了非斜杠url。有没有办法通过路由器中的重定向强制执行尾部斜杠 get "/:controller/:id" => redirect{|params| "/#{params[:controller]}/#{params[:id]}/" } 上述情况导致了一个循环 为什么? 上“/subclass”的相对链接 与之大不相同 /parent/1/ 在config/application

使用{:trailing_slash=>true}在链接中添加尾部斜杠非常简单,但这并不能说明用户是否键入了非斜杠url。有没有办法通过路由器中的重定向强制执行尾部斜杠

get "/:controller/:id" => redirect{|params| "/#{params[:controller]}/#{params[:id]}/" }
上述情况导致了一个循环

为什么?

上“/subclass”的相对链接

与之大不相同

/parent/1/

在config/application.rb文件中,添加

config.action_controller.default_url_options = { :trailing_slash => true }

在应用程序类中

在Rails 6中测试和工作+

放入
config/application.rb
文件:

config.action_controller.default_url_options = { :trailing_slash => true }
注意:这不会自动重定向任何不带尾随斜杠的URL。它只是将“/”附加到应用程序中任何链接的末尾。
为了强制301重定向任何不带尾随斜杠的URL到结尾带尾随斜杠的URL,您可能需要使用gem rack rewrite。

我认为这并不能解决问题。添加config.action\u controller.default\u url\u options={trailing\u slash:true}只能确保rails中生成的url包含尾部斜杠。如果您想确保用户手动键入请求url时,其请求url中有尾随斜杠,那么您需要这样的东西:我很欣赏版本通气测试——这不是一个评论,而是一个竞争性的答案吗?嘿@trevorgrayson,不是有意竞争,只是对SO不熟悉,还在学习最佳实践。玩得开心!:)
config.action_controller.default_url_options = { :trailing_slash => true }