Ruby on Rails/Examples/HTML4.01
< Ruby on Rails | Examples
Rails generates XHTML by default. It can be made to generate HTML4.01 that can be validated with The W3C HTML validator.
DOCTYPE edit
Layouts begin with the HTML4.01 Strict DOCTYPE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
ApplicationHelper edit
application_helper.rb
looks something like this:
module Html4ize
# Supports making alternative versions of Rails helpers that output HTML
# 4.01 markup as opposed to XHTML. Example:
#
# html4_version_of :submit_tag
#
# ..which creates a submit_tag_html4 helper that takes the same options as
# submit_tag but which renders HTML 4.01.
#
def html4_version_of helper_name
define_method "#{helper_name}_html4" do |*args|
html = send helper_name, *args
html.gsub! " />", ">"
html
end
end
def html4_versions_of *helper_names
helper_names.each do |helper_name|
html4_version_of helper_name
end
end
class << self
def included receiver
receiver.extend Html4ize
end
end
end
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
include Html4ize
html4_versions_of :stylesheet_link_tag, :image_tag, :text_field, :submit_tag
...
end
# Extend FormBuilder with our own helper methods
class ActionView::Helpers::FormBuilder
include Html4ize
html4_versions_of :text_field, :check_box, :hidden_field, :submit
...
end
Views edit
Views can then refer to the newly-wrapped helpers:
...
<%= image_tag_html4 "logo.png" %>
...
<% form_for :person do |form| %>
<div><b>Name:</b><%= form.text_field_html4 :name %></div>
...
<div class="submit"><%= form.submit_html4 "Save" %></div>
<% end %>