diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2010-08-04 23:00:33 +0200 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2010-09-03 22:59:12 +0200 |
commit | 8fb9df535e9fcf4c117ffd3254027e0fe2425cb7 (patch) | |
tree | 85bd6505a51f5b676c000e694118cbb7f456d57c /railties | |
parent | 8284fd38551c00c30cf89fa22d1afd503a08c516 (diff) | |
download | rails-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.rb | 34 |
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 |