Почему «доходность» уступает дважды? - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть следующий код:

def bootstrap_form_field(f, method, text, &block)
  content_tag :div, :class => div_classes(f, method) do
    f.label(method.to_sym, text) +
    content_tag(:div, :class => "input") do
      concat(yield + error_display(f.object, method))
    end
  end
end

который я ожидаю получить что-то вроде этого:

<div class="clearfix error">
  <label for="xlInput">X-Large Input</label>
  <div class="input">
    <input class="xlarge error" id="xlInput" name="xlInput" size="30" type="text">
    <span class="help-inline">Small snippet of help text</span>
  </div>
</div>

от вызова, такого как:

<%= bootstrap_form_field f, :password, "Password" do %>
  <%= f.password_field :password %>
<% end -%>

но мой урожай, кажется, уступает дважды:

<div class="clearfix error">
  <label for="user_password">Password</label>
  <div class="input">
    <input id="user_password" name="user[password]" size="30" type="password">
    <input id="user_password" name="user[password]" size="30" type="password">
    <span class="help-inline">can't be blank</span>
  </div>
</div>

Как так?

Ответы [ 2 ]

1 голос
/ 01 сентября 2011
<%= bootstrap_form_field f, :password, "Password" do %>
  <%= f.password_field :password %>
<% end -%>

=>

<% bootstrap_form_field f, :password, "Password" do %>
  <%= f.password_field :password %>
<% end -%>
0 голосов
/ 01 сентября 2011
  def bootstrap_form_field(f, method, text, &block)
    content_tag :div do
      f.label(method.to_sym, text) +
        content_tag(:div, :class => "input") do
          yield + error_display(f.object, method)
        end
    end
  end

должно работать. Конкат не нужен, но я не помню почему.

EDIT:

См. https://github.com/rails/rails/blob/4d3ec4c6a8584fdd9275576ecab07302973e7cc5/actionpack/lib/action_view/helpers/text_helper.rb#L51 Я думаю, что concat - правильный способ добавить строку в выходной буфер в помощнике. Таким образом, это нормально, чтобы получить текст дважды с

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