Как настроить Ruby on Rails для вывода стандартного HTML-кода вместо XHTML при использовании помощников (форма, javascript, css и т. д.)?
Я не хочу иметь косую черту в конце:
<input name="email" type="text" />
Как настроить Ruby on Rails для вывода стандартного HTML-кода вместо XHTML при использовании помощников (форма, javascript, css и т. д.)?
Я не хочу иметь косую черту в конце:
<input name="email" type="text" />
Этот ответ содержится в ссылке, предоставленной 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
Решение не работает с последней версией 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
Поместите это в инициализатор.
Для рельсов 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