2

content_tag 以外のすべての content_tags が表示されるのはなぜですか :i

  def sign_full_tag(group, obj, name, input_type="text", size="12", popover=true)
    content_tag :div, class: "row" do
      content_tag :div, class: "col-md-" + size do
        content_tag :div, class: "form-group left-inner-addon" + class_for_invalid_input(obj, name) do
          content_tag(:i, "", class: "fa fa-user fa-fw text-muted") # NOT DISPLAY!!!
          group.text_field( name,
                            class: "form-control" + (popover ? " popover-add" : ""),
                            id: name.to_s.gsub("_", "-"),
                            type: input_type,
                            placeholder: "#{t('sign_up.placeholder.' + name.to_s)}",
                            data: { container: "body",
                                    toggle: "popover",
                                    placement: "bottom",
                                    content: (popover ?  "#{t('sign_up.popover.' + name.to_s)}" : nil) })

        end
      end
    end
  end

このヘルパーをレンダリングすると、ブラウザにタグ「i」が表示されません。これはどのように機能しますか?

4

1 に答える 1

3

これは、ブロック内の最後のステートメントのみが返されるためです。2 つのステートメントを連結して、1 つの文字列として返されるようにする必要があります。

content_tag(:div, etc etc) do
  content_tag(:i, "") + group.text_field(name, etc etc)
end
于 2014-06-16T14:58:35.957 に答える