Configure Rails to output HTML output instead of XHTML

岁酱吖の 提交于 2019-12-04 08:38:43

问题


How do I configure Ruby on Rails to output standard HTML code instead of XHTML when using helpers (form, javascript, css, etc.)?

I don't want to have the slash at the end:

<input name="email" type="text" />

回答1:


This answer is contained in the link provided by MarkusQ, but I figured I could spell it out exactly.

You have to modify the code than renders all tags, you can do that by including the following code into something like lib/dont_use_xhtml.rb

module ActionView::Helpers::TagHelper
  alias :tag_without_backslash :tag
     def tag(name, options = nil, open = true, escape = true)
        tag_without_backslash(name, options, open, escape)
     end 
  end 



回答2:


The solution does not work with the latest version of Rails. Some helpers will override the open method argument of 'open' to 'false'.

The following works for me in Rails 2.3.5:

module ActionView::Helpers::TagHelper
  def tag_with_html_patch(name, options = nil, open = true, escape = true)
    tag_without_html_patch(name, options, true, escape)
  end
  alias_method_chain :tag, :html_patch
end

Put that into an initializer.




回答3:


See http://railsforum.com/viewtopic.php?id=21941

-- MarkusQ




回答4:


For rails 2.3:

Install the gem haml then add the following initializer config/initializers/force_html4.rb:

Haml::Template::options[:format] = :html4

module StandardistaHelper
  def tag(name, options = nil, open = false, escape = true)
    "<#{name}#{tag_options(options, escape) if options}>"
  end
end

ActionView::Base.send :include, StandardistaHelper

ActionView::Helpers::InstanceTag.class_eval do
  def tag_without_error_wrapping(name, options = nil, open = false, escape = true)
    "<#{name}#{tag_options(options, escape) if options}>"
  end
end


来源:https://stackoverflow.com/questions/595867/configure-rails-to-output-html-output-instead-of-xhtml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!