Using Markaby w/ Rails 2.0.1
December 13th, 2007
Rails 2.0.1 is out, in general, it’s pretty nice. Markaby doesn’t play too nice w/ it. Markaby requires every named route to have a .to_s on the end of it. Yuck.
After migrating my 3rd project to rails 2.0.1, I got sick of adding .to_s to each named routes, and did some digging.
Apparently, somehow a string coming from a named route is not exactly a string. Sure
apples_path().class == String |
but
String === apples_path() |
is NOT true. I couldn’t quite track down why this was but it eventually leads to a
ActionView::TemplateError (undefined method `string_path' for #) on line #10 of messages/index.mab:
actionpack-2.0.1/lib/action_controller/polymorphic_routes.rb:27:in `send!'
actionpack-2.0.1/lib/action_controller/polymorphic_routes.rb:27:in `polymorphic_url'
actionpack-2.0.1/lib/action_controller/polymorphic_routes.rb:31:in `polymorphic_path'
actionpack-2.0.1/lib/action_view/helpers/url_helper.rb:79:in `url_for'
actionpack-2.0.1/lib/action_view/helpers/url_helper.rb:144:in `link_to'
...
After an hour of trying in vain to find the source of the problem, I found a simple hack that fixes this. Should have thought of this before, but add this code to your application_helper.rb
1 2 3 |
def string_path(string) string end |
If anyone else has a better solution, please pass it over!

December 20th, 2007 at 11:50 AM Thanks Jeremy - that worked like a charm!