El Miércoles, 6 de Abril de 2011 17:07:48 Samuel Kadolph escribió:
> For the longest time PartialRenderer#partial_path has prefixed the
> prefix of the current controller when it is nested in a module. This
> hasn't been a problem (because nesting controllers wasn't that common)
> but with 3.1 striving for better engine support, this problem is now
> larger because all of your controllers for an engine will be nested
> and it makes doing <%= render @thing %> in your code (and anybody
> else's) extremely tedious and impossible without specifying
> the :partial to use.
> 
> https://github.com/rails/rails/blob/master/actionpack/lib/action_view/rende
> rer/partial_renderer.rb#L150-159 Normally this function grabs the partial
> to use with
> model_name.partial_path which is great for default views (things/
> _thing.html.erb) but as soon as you call it from a controller that is
> nested it ends up giving you a path like controller_namespace/things/
> _thing.html.erb. I can see the advantage of that (if you want
> different partial for @thing in your admin namespace) but I think the
> disadvantage of being unable to reuse your partials is too big
> (especially with other code using your engine).
> 
> module Foo
>   class Engine < Rails::Engine; isolate_namespace Foo; end
>   class ApplicationController < ActionController::Base; end
>   class Thing < ActiveRecord::Base; end
> end
> Foo::Thing.connection.create_table(:foo_things)
> Foo::ApplicationController.new.view_context._partial_renderer.send(:partial
> _path, Foo::Thing.new)
>  => "foo/foo/things/thing"
> 
> I believe the solution should be to change the default behaviour or at
> least provide an option to stop rails from prefixing the partial_path.

I agree. We recently went through this and it was a bit weird. We were calling 
<%= render @object %> inside a Foo::BarsController and Rails looked for 
'foo/objects/_object', that was not our intention.

We were indeed looking for an option like that.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to