datalist_tag(추가도 할 수 있는 셀렉트 박스)를 헬퍼에 추가한다.
소개
M3C 어드벤트 캘린더 25일 입니다.
추가 또는 선택할 수 있는 IF
예를 들면, 가계부 앱 등으로,
마스터 목록에서 선택할 물품을 선택하지만,
물품이 마스터에 없는 경우는 추가할 수 있다는 IF를 만들고 싶을 때가 있다.
기존의 리스트로부터 선택하는 경우와, 리스트에 없는 것을 입력하는 경우로 폼을 나누면 편한 것이지만 사용성은 좋지 않다. 있으면 선택하지 않으면 그대로 추가라는 바람으로 하고 싶다.
그러한 경우는 HTML5로 추가된 datalist를 잡으면 좋을 것 같다.
datalist는 안에 option 태그를 복수 가지는 태그로, datalist에 붙인 id를
텍스트 필드의 list 속성으로 지정하면 「있는 경우 리스트로부터 선택해, 없으면 입력한다」입력란을 만들 수 있다.
Rails에서 도우미 만들기
도우미로 정의
application_helpler.rbdef datalist_tag(name, value, datalist, options={})
id = "#{name}-#{Random.new.rand}"
options.merge!({
list: id
})
html=<<-EOS
<%= text_field_tag(name, value, options) %>
<datalist id="#{id}">
<% datalist.each do |name| %>
<option value="<%= name %>">
<% end %>
</datalist>
EOS
ERB.new(html).result(binding).html_safe
end
view에서 호출합니다.
<%= datalist_tag('item[name]', nil, @data_list, autocomplete: 'off') %> %>
@data_list
는 선택 사항에 표시하려는 데이터를 배열로 전달합니다.
간단한 가계부
datalist_tag
를 사용하여 간단한 가계부를 만듭니다.
datalist의 텍스트 필드 부분은 autocomplete=off
로 해 두지 않으면
한 번 입력하고 그 후 지운 항목도 선택하러 나와 보기 힘들어진다.
Reference
이 문제에 관하여(datalist_tag(추가도 할 수 있는 셀렉트 박스)를 헬퍼에 추가한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/goy/items/1f1fe11f1dd6da4bbfae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
도우미로 정의
application_helpler.rb
def datalist_tag(name, value, datalist, options={})
id = "#{name}-#{Random.new.rand}"
options.merge!({
list: id
})
html=<<-EOS
<%= text_field_tag(name, value, options) %>
<datalist id="#{id}">
<% datalist.each do |name| %>
<option value="<%= name %>">
<% end %>
</datalist>
EOS
ERB.new(html).result(binding).html_safe
end
view에서 호출합니다.
<%= datalist_tag('item[name]', nil, @data_list, autocomplete: 'off') %> %>
@data_list
는 선택 사항에 표시하려는 데이터를 배열로 전달합니다.간단한 가계부
datalist_tag
를 사용하여 간단한 가계부를 만듭니다.
datalist의 텍스트 필드 부분은 autocomplete=off
로 해 두지 않으면
한 번 입력하고 그 후 지운 항목도 선택하러 나와 보기 힘들어진다.
Reference
이 문제에 관하여(datalist_tag(추가도 할 수 있는 셀렉트 박스)를 헬퍼에 추가한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/goy/items/1f1fe11f1dd6da4bbfae
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(datalist_tag(추가도 할 수 있는 셀렉트 박스)를 헬퍼에 추가한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/goy/items/1f1fe11f1dd6da4bbfae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)