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
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
def string_path(string) string end
If anyone else has a better solution, please pass it over!