在redirect_to方法中禁用转义字符

时间:2015-09-18 13:38:10

标签: ruby-on-rails ruby ruby-on-rails-4 redirect

我的控制器中使用了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

3 个答案:

答案 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