1

次のhamlコードがあります

form_for @user_notification_settings_form do |f|
  = f.label :follow do
    div dummy

しかし、それは生成します

<label for="user_notification_settings_form_follow">
  foruser_notification_settings_form_follow
</label>

私はそれが生成されることを期待していた場所

<label for="user_notification_settings_form_follow">
  <div>dummy</div>
</label>

私が見つけたレールへのデバッグ:

label_tag内にform_tag_helperはあります&blockが、呼び出すcontent_tagtag_helper&block今は nilになります

  def label_tag(name = nil, content_or_options = nil, options = nil, &block)
    options = content_or_options if block_given? && content_or_options.is_a?(Hash)
    options ||= {}
    options.stringify_keys!
    options["for"] = sanitize_to_id(name) unless name.blank? || options.has_key?("for")
    content_tag :label, content_or_options || name.to_s.humanize, options, &block
  end
  def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
    if block_given?
      options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
      content_tag_string(name, capture(&block), options, escape)
    else
      content_tag_string(name, content_or_options_with_block, options, escape)
    end
  end
4

1 に答える 1

0

%div要素を作成し、その中にラベルのテキストをネストするだけです。

form_for @user_notification_settings_form do |f|
  = f.label :follow do
    %div 
      dummy
于 2015-11-30T03:28:21.263 に答える