# ActionController::UrlWriter bug -- need help URGENTLY, thanks!

**URL:** <https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814>\
**Category:** Rails\
**Created:** [August 15, 2009, 3:03pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814 "2009-08-15T15:03:32Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 15, 2009, 3:03pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/1 "2009-08-15T15:03:32Z")

</div>

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/](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.

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 15, 2009, 3:15pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/2 "2009-08-15T15:15:49Z")

</div>

On Aug 15, 1:52 pm, “removed\_email\_address@domain.invalid” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> thus are not available in the class methods
> 
> 1. According to the rails api you can access the helpers by using  
> ActionController::UrlWriter.xxx\_path ([http://api.rubyonrails.org/](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](http://example.com)’  
end  
end  
ActionController::Routing::Routes.named\_routes.install(Foo)

Foo.new.generate #=\> “[http://example.com/admin/parent\_categories](http://example.com/admin/parent_categories)”

Fred

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 15, 2009, 3:24pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/3 "2009-08-15T15:24:01Z")

</div>

This only works for instance methods, my problem is that I need to be  
able to access xxxx\_path from a class method… meaning:

class Foo  
include ActionController::UrlWriter  
def self.generate  
login\_path :host =\> ‘[example.com](http://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 C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 15, 2009, 3:33pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/4 "2009-08-15T15:33:58Z")

</div>

On Aug 15, 2:22 pm, “removed\_email\_address@domain.invalid” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) 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

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 16, 2009, 5:08pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/5 "2009-08-16T17:08:35Z")

</div>

As in many cases, if it’s difficult to do in Rails, it’s probably  
wrong. Can you give more detail on why you’re generating URLs in a  
model rather than in the controller/view that’s sending them to the  
user?

–Matt J.

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 15, 2009, 3:39pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/6 "2009-08-15T15:39:50Z")

</div>

Yea i guess it just seems silly to create a separate class who’s only  
purpose is to include ActionController::UrlWriter, especially since  
the rails documentation says that you can simply call  
ActionController::UrlWriter.xxx\_path.

On Aug 15, 9:32 am, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 17, 2009, 5:29pm UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/7 "2009-08-17T17:29:32Z")

</div>

I am generating a URL for use with GoogleCheckout. I have a method in  
a model that uses the visitors shopping cart to construct an xml  
request to GoogleCheckout, in that request i need to include a  
callback url that GoogleCheckout can use to contact my webapp.

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [May 21, 2010, 2:30am UTC](https://www.ruby-forum.com/t/actioncontroller-urlwriter-bug-need-help-urgently-thanks/173814/8 "2010-05-21T02:30:51Z")

</div>

removed\_email\_address@domain.invalid wrote:

> I am generating a URL for use with GoogleCheckout. I have a method in  
> a model that uses the visitors shopping cart to construct an xml  
> request to GoogleCheckout, in that request i need to include a  
> callback url that GoogleCheckout can use to contact my webapp.

I am in the same situation, needing to access the named routes from  
within a class method and am having no luck coming up with a logic  
solution. It seems that every post out there asking the same thing gets  
met with “if it’s so difficult, you probably shouldn’t be doing it.” I  
usually agree with this, but generating a callback for any 3rd party api  
calls that get made at a class level seems like a pretty acceptable  
requirement.

Did you ever come to a solution that worked for you admin@fotocera?
