On Aug 15, 2:22 pm, "[email protected]" <[email protected]> wrote:
> This only works for instance methods, my problem is that I need to be
> able to access xxxx_path from a class method... meaning:
Well there's nothing stopping you bundling up your url generation
stuff into its own class and then do UrlGenerator.new.generate (I'd
even reccomend it seing as install the routes will pollute your
model's name space with loads of methods.
A small experiment shows that
ActionController::Routing::Routes.named_routes.install isn't actually
needed - UrlWriter's included method seems to call that for you
Fred
>
> class Foo
> include ActionController::UrlWriter
> def self.generate
> login_path :host => 'example.com'
> end
> end
> ActionController::Routing::Routes.named_routes.install(Foo)
>
> Foo.generate
> #=> NameError: undefined local variable or method `login_path' for
> Foo:Class
> from (irb):4:in `generate'
> from (irb):9
>
> On Aug 15, 9:14 am, Frederick Cheung <[email protected]>
> wrote:
>
>
>
> > On Aug 15, 1:52 pm, "[email protected]" <[email protected]> wrote:
>
> > > So i've been banging my head against this for the better part of the
> > > last 5 hours and I have concluded that in my sleep deprived state I'm
> > > missing something really obvious and should just ask for help.
>
> > > I need to be able to access named route helpers (XXX_path and XXX_URL)
> > > form a class method in an ActiveRecord model. I tried a couple of
> > > approaches none of which worked:
>
> > > 1) include ActionController::UrlWriter in the model class -- this
> > > doesn't work because the included methods are instance methods and
> > > thus are not available in the class methods
>
> > > 2) According to the rails api you can access the helpers by using
> > > ActionController::UrlWriter.xxx_path (http://api.rubyonrails.org/
> > > classes/ActionController/UrlWriter.html). However that just doesn't
> > > work for me, I get the following error
>
> > > NoMethodError: undefined method `xxx_path' for
> > > ActionController::UrlWriter:Module
>
> > > If anyone has ANY ideas PLEASE let me know.
>
> > The helpers are defined in an anonymous module hidden inside the
> > routing stuff. You can ask rails to include that module in a class for
> > you, eg
>
> > class Foo
> > include ActionController::UrlWriter
> > def generate
> > parent_categories_url :host => 'example.com'
> > end
> > end
> > ActionController::Routing::Routes.named_routes.install(Foo)
>
> > Foo.new.generate #=> "http://example.com/admin/parent_categories"
>
> > Fred
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" 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-talk?hl=en
-~----------~----~----~----~------~----~------~--~---