我的控制器中使用了redirect_to,进入[@product, @version]
。我被重定向到/same%2Fpath%2Fwith%2Fannoying%symbols
而不是预期路径。
如何解决此问题并将不必要的%2F
替换为预期的/
?
已更新
# config/routes.rb
constraints(number: /[.\d]+/, name: /[A-Za-z0-9_.-\/]+/) do
resources :products, except: [:index], param: :name do
resources :versions, except: [:index], param: :number
end
end
答案 0 :(得分:1)
您可以使用Ruby中构建的CGI::unescape
。像这样:
redirect_to CGI::unescape(your_string_path)
答案 1 :(得分:1)
尝试将所需参数传递给url助手,类似:
redirect_to new_product_versions_path([@product, @version], name: 'some name', number: 235)
我可能误解了您的网址助手名称的拼写错误,您可以通过查看rake routes
的输出找到正确的拼写错误。
答案 2 :(得分:0)
这对我有用
redirect_to new_product_version_path(@product).gsub('%2F', '/')
当然,您可以在ApplicatonController
def redirect_to(options = {}, response_status_and_flash = {})
options.gsub!('%2F', '/') if options.respond_to?(:gsub)
super(options, response_status_and_flash)
end