콘텐츠 태그를 사용자 지정 도우미에 중첩하여 다음과 같이 만들려고합니다.
<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를 주석 처리하면 레이블이 표시됩니다.
감사!
답변
+
빠른 수정 이 필요합니다 : D
module InputHelper
def editable_input(label,name)
content_tag :div, :class => "field" do
content_tag(:label,label) + # Note the + in this line
text_field_tag(name,'', :class => 'medium new_value')
end
end
end
<%= editable_input 'Year Founded', 'companyStartDate' %>
의 블록 안에는 content_tag :div
마지막으로 반환 된 문자열 만 표시됩니다.
답변
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
답변
더 깊은 중첩을 돕기 위해 변수와 연결을 사용합니다.
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