aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-08-04 23:00:33 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-09-03 22:59:12 +0200
commit8fb9df535e9fcf4c117ffd3254027e0fe2425cb7 (patch)
tree85bd6505a51f5b676c000e694118cbb7f456d57c /railties
parent8284fd38551c00c30cf89fa22d1afd503a08c516 (diff)
downloadrails-8fb9df535e9fcf4c117ffd3254027e0fe2425cb7.tar.gz
rails-8fb9df535e9fcf4c117ffd3254027e0fe2425cb7.tar.bz2
rails-8fb9df535e9fcf4c117ffd3254027e0fe2425cb7.zip
Modified polymorphic_url to check for model's namespace
This change allows using namespaced models with polymorphic_url, in the way that you would use them without namespace. Let's say that you have Blog::Post model in namespaced Engine. When you use polymorphic_path with Blog::Post instances, like in form_for(@post), it will look for blog_posts_path named url helper. As we are inside Blog::Engine, it's annoying to always use the prefix. With this commit, blog_ prefix will be removed and posts_path will be called.
Diffstat (limited to 'railties')
-rw-r--r--railties/test/railties/engine_test.rb34
1 files changed, 30 insertions, 4 deletions
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index cda1d12fa8..fff925404d 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -352,6 +352,18 @@ module RailtiesTest
end
RUBY
+ @plugin.write "app/models/bukkits/post.rb", <<-RUBY
+ module Bukkits
+ class Post
+ extend ActiveModel::Naming
+
+ def to_param
+ "1"
+ end
+ end
+ end
+ RUBY
+
app_file "config/routes.rb", <<-RUBY
AppTemplate::Application.routes.draw do
match "/bar" => "bar#index", :as => "bar"
@@ -361,10 +373,14 @@ module RailtiesTest
@plugin.write "config/routes.rb", <<-RUBY
Bukkits::Engine.routes.draw do
- match "/foo" => "bukkits/foo#index", :as => "foo"
- match "/foo/show" => "bukkits/foo#show"
- match "/from_app" => "bukkits/foo#from_app"
- match "/routes_helpers_in_view" => "bukkits/foo#routes_helpers_in_view"
+ namespace(:bukkits, :path => nil, :shallow_path => nil, :as => nil) do
+ match "/foo" => "foo#index", :as => "foo"
+ match "/foo/show" => "foo#show"
+ match "/from_app" => "foo#from_app"
+ match "/routes_helpers_in_view" => "foo#routes_helpers_in_view"
+ match "/polymorphic_path_without_namespace" => "foo#polymorphic_path_without_namespace"
+ resources :posts
+ end
end
RUBY
@@ -401,6 +417,10 @@ module RailtiesTest
def routes_helpers_in_view
render :inline => "<%= foo_path %>, <%= app.bar_path %>"
end
+
+ def polymorphic_path_without_namespace
+ render :text => polymorphic_path(Post.new)
+ end
end
RUBY
@@ -411,6 +431,8 @@ module RailtiesTest
end
RUBY
+ add_to_config("config.action_dispatch.show_exceptions = false")
+
boot_rails
assert_equal "bukkits_", Bukkits.table_name_prefix
@@ -434,6 +456,10 @@ module RailtiesTest
env = Rack::MockRequest.env_for("/bukkits/routes_helpers_in_view")
response = AppTemplate::Application.call(env)
assert_equal "/bukkits/foo, /bar", response[2].body
+
+ env = Rack::MockRequest.env_for("/bukkits/polymorphic_path_without_namespace")
+ response = AppTemplate::Application.call(env)
+ assert_equal "/bukkits/posts/1", response[2].body
end
end
end