Skip to content

Commit

Permalink
Merge pull request #31261 from rails/fix-relative-url-root-with-optim…
Browse files Browse the repository at this point in the history
…ized-url-helpers

Fix optimized url helpers when using relative url root
  • Loading branch information
pixeltrix authored Nov 28, 2017
2 parents f2b6406 + 00c0e40 commit 076d162
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
7 changes: 7 additions & 0 deletions actionpack/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
* Fix optimized url helpers when using relative url root

Fixes #31220.

*Andrew White*


## Rails 5.2.0.beta1 (November 27, 2017) ##

* Add DSL for configuring Content-Security-Policy header
Expand Down
10 changes: 10 additions & 0 deletions actionpack/lib/action_dispatch/routing/route_set.rb
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,16 @@ def call(t, args, inner_options)
if args.size == arg_size && !inner_options && optimize_routes_generation?(t)
options = t.url_options.merge @options
options[:path] = optimized_helper(args)

original_script_name = options.delete(:original_script_name)
script_name = t._routes.find_script_name(options)

if original_script_name
script_name = original_script_name + script_name
end

options[:script_name] = script_name

url_strategy.call options
else
super
Expand Down
37 changes: 37 additions & 0 deletions actionpack/test/dispatch/routing_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5057,3 +5057,40 @@ def recognize_path(*args)
Routes.recognize_path(*args)
end
end

class TestRelativeUrlRootGeneration < ActionDispatch::IntegrationTest
config = ActionDispatch::Routing::RouteSet::Config.new("/blog", false)

stub_controllers(config) do |routes|
Routes = routes

routes.draw do
get "/", to: "posts#index", as: :posts
get "/:id", to: "posts#show", as: :post
end
end

include Routes.url_helpers

APP = build_app Routes

def app
APP
end

def test_url_helpers
assert_equal "/blog/", posts_path({})
assert_equal "/blog/", Routes.url_helpers.posts_path({})

assert_equal "/blog/1", post_path(id: "1")
assert_equal "/blog/1", Routes.url_helpers.post_path(id: "1")
end

def test_optimized_url_helpers
assert_equal "/blog/", posts_path
assert_equal "/blog/", Routes.url_helpers.posts_path

assert_equal "/blog/1", post_path("1")
assert_equal "/blog/1", Routes.url_helpers.post_path("1")
end
end

0 comments on commit 076d162

Please sign in to comment.