Настройте Rails для вывода HTML вместо XHTML

Как настроить Ruby on Rails для вывода стандартного HTML-кода вместо XHTML при использовании помощников (форма, javascript, css и т. д.)?

Я не хочу иметь косую черту в конце:

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

person deepwell    schedule 27.02.2009    source источник


Ответы (4)


Этот ответ содержится в ссылке, предоставленной MarkusQ, но я решил, что смогу точно его изложить.

Вам нужно изменить код, чем отображать все теги, вы можете сделать это, включив следующий код во что-то вроде 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 
person Kyle Boon    schedule 06.03.2009

Решение не работает с последней версией Rails. Некоторые помощники переопределяют аргумент открытого метода «open» на «false».

В 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

Поместите это в инициализатор.

person Seth Ladd    schedule 28.12.2009

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

-- МаркусКью

person MarkusQ    schedule 27.02.2009

Для рельсов 2.3:

Установите гем haml, затем добавьте следующий инициализатор 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
person Justin Tanner    schedule 10.08.2010