Using named routes in Streamlined addition files

For you Streamlined users out there, here’s an easy way to include named routes in your Streamlined addition modules. Previously, you had to hard code the URLs like so:

module OrderAdditions
  def name_link
    link_to user.name, "/users/show/#{user.id}"
  end
end

Order.class_eval do
  include OrderAdditions
  include ActionView::Helpers::UrlHelper
  include ActionView::Helpers::TagHelper
end

Streamlined.ui_for(Order) do
  list_columns :name_link
end

By including Rails 2’s new ActionController::UrlWriter module, you can access any named or RESTful routes you’ve defined in routes.rb:

module OrderAdditions
  def name_link
    link_to user.name, user_url(user.id)
  end
end

Order.class_eval do
  ...
  include ActionController::UrlWriter
  default_url_options[:host] = APP_HOST
end

It would be nice for this to get baked into Streamlined somehow so UrlWriter automatically gets included, but until that happens this is a good way to get rid of those pesky hard-coded URLs.