Я пытаюсь вложить теги содержимого в специальный помощник, чтобы создать что-то вроде этого:
<div class="field">
<label>A Label</label>
<input class="medium new_value" size="20" type="text" name="value_name" />
</div>
Обратите внимание, что ввод не связан с формой, он будет сохранен через javascript.
Вот помощник (он будет делать больше, чем просто отображать html):
module InputHelper
def editable_input(label,name)
content_tag :div, :class => "field" do
content_tag :label,label
text_field_tag name,'', :class => 'medium new_value'
end
end
end
<%= editable_input 'Year Founded', 'companyStartDate' %>
Однако метка не отображается, когда я вызываю помощник, отображается только ввод. Если он закомментирует text_field_tag, то отображается метка.
Благодаря!
ruby-on-rails
ruby-on-rails-3
helpers
christo16
источник
источник
concat
как предлагают другие ответыВы также можете использовать метод concat :
module InputHelper def editable_input(label,name) content_tag :div, :class => "field" do concat(content_tag(:label,label)) concat(text_field_tag(name,'', :class => 'medium new_value')) end end end
Источник: Вложение content_tag в Rails 3
источник
+
строки между non-htmlsafe сделает все не-htmlsafe@template.concat
+
. Более читаемый, а Rubocop не любит+
Я использую переменную и concat, чтобы помочь с более глубоким вложением.
def billing_address customer state_line = content_tag :div do concat( content_tag(:span, customer.BillAddress_City) + ' ' + content_tag(:span, customer.BillAddress_State) + ' ' + content_tag(:span, customer.BillAddress_PostalCode) ) end content_tag :div do concat( content_tag(:div, customer.BillAddress_Addr1) + content_tag(:div, customer.BillAddress_Addr2) + content_tag(:div, customer.BillAddress_Addr3) + content_tag(:div, customer.BillAddress_Addr4) + content_tag(:div, state_line) + content_tag(:div, customer.BillAddress_Country) + content_tag(:div, customer.BillAddress_Note) ) end end
источник
создание вложенных тегов содержимого с итерацией немного отличается и меня каждый раз получает ... вот один метод:
content_tag :div do friends.pluck(:firstname).map do |first| concat( content_tag(:div, first, class: 'first') ) end end
источник