Easy way to add .html extension to all URLs?

Is there an easy way to add a .html extension to the end of all URLs?

I've tried adding this to routes.rb: map.connect ':controller/:action/:id.html', :format => 'html'

or this to the ApplicationController:   def default_url_options(options)     { :format => 'html' }   end

but neither of these methods renders the right link with the link_to tag <%= link_to 'Show', post] %>

Do I have to use <a href="<%= url_for(post) %>.html"> or is there a more elegant solution?

Thanks!

et wrote:

Is there an easy way to add a .html extension to the end of all URLs?

I've tried adding this to routes.rb: map.connect ':controller/:action/:id.html', :format => 'html'

but neither of these methods renders the right link with the link_to tag <%= link_to 'Show', post] %>

Thanks!

Where did you put that extra route?

Routes are matched in the order they feature in your routes.rb file

so,

map.admin 'admin/:action/:id.html', :controller => 'admin', :format => "html" ....

map.connect ':controller/:action/:id.html', :format => "html" map.connect ':controller/:action.html', :format => "html"

# now the defaults map.connect ':controller/:action/:id.:format' map.connect ':controller/:action/:id

should generate with .html for you, but why do you want this?

by all means provide a legacy fallback to .html, but moving forward, why is it good to depend on this extension?

I have the extra route above the default ones, but is there a way to generate "/posts/1.html" using <%= link_to 'Show', post %> or a simpler method than what I have above?

Right now /posts/1.html works if I navigate directly to it, but the links on the views/posts/index.html.erb are still rendering as /posts/ 1

The reason I want the extension is to make sure search engines will see /posts/1.html as a document in the first level directory as opposed to /posts/1 as a second deeper level directory.