В Rails 3 DOCTYPE по умолчанию является HTML 5, но он использует <meta name = "csrf-param" content = "authenticity_token" />? - PullRequest
0 голосов
/ 01 апреля 2011

Rails 3 использует DOCTYPE HTML 5 по умолчанию:

<!DOCTYPE html>

за исключением нескольких строк ниже, он имеет

<meta name="csrf-param" content="authenticity_token"/>

Я думал, что синтаксис HTML никогда не должен иметь самозакрывающихся тегов? (только XHTML / XML использует это, не так ли?)

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Вы можете достичь желаемого результата, если хотите переопределить встроенный метод Rails.Если вы сделаете это, вы рискуете вызвать проблемы при обновлении до будущих версий Rails, которые обновляют логику этого метода.Поскольку обе формы действительны в соответствии со спецификацией HTML5, внесение изменений, приведенных ниже, принесет очень мало пользы для HTML5.Единственные причины, по которым я могу подумать, это сделать, если вы полностью одержимы своим стилем кода HTML или используете доктайп HTML 4.(Следующий метод csrf_meta_tag изменен из Rails / ActionPack 3.0.7.)

module ActionView
  # = Action View CSRF Helper
  module Helpers
    module CsrfHelper
      # Returns a meta tag with the cross-site request forgery protection token
      # for forms to use. Place this in your head.
      def csrf_meta_tag
        if protect_against_forgery?
          %(<meta name="csrf-param" content="#{Rack::Utils.escape_html(request_forgery_protection_token)}">\n<meta name="csrf-token" content="#{Rack::Utils.escape_html(form_authenticity_token)}">).html_safe
        end
      end
    end
  end
end

Я также переопределил помощник по тегам (изменив параметр открытия на значение по умолчанию true вместо false), чтобы помощники форм не делали это.выводить самозакрывающиеся теги.

module ActionView
  module Helpers
    module TagHelper
      def tag(name, options = nil, open = true, escape = true)
        "<#{name}#{tag_options(options, escape) if options}#{open ? ">" : " />"}".html_safe
      end
    end
  end
end

FWIW, я храню расширения для существующих классов, например, lib/extensions/action_view.rb;эти расширения загружаются config/initializers/extensions.rb, который состоит из:

Dir[File.join(Rails.root, 'lib', 'extensions', '*.rb')].each {|f| require f}
2 голосов
/ 01 апреля 2011

в HTML5 на самом деле совместимо иметь самозакрывающиеся теги для пустого элемента, такого как meta, img, input и т. Д.

Ссылка: http://www.whatwg.org/specs/web-apps/current-work/#start

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...