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