acts-as-taggable-on을 checkbox로 조작
그러나 기본적으로
이런 손으로 입력하는 필드에 박는 장면을 상정하여 사용하고 있다고 생각합니다.
이것이,
이런 식으로 입력할 수 있으면 편리하죠?
인터넷에 정보가 많지 않고 본가의 젬 사이트
htps : // 기주 b. 이 m / mb ㅇ gh / 아 cts - 아 - ta b- 온
에도 나오지 않았기 때문에 여기에 방법을 올려 둡니다.
기본적으로 Gem을 Bundle하여 테이블을 만들고 Model과 Controller 만드는 곳까지는 함께 있습니다.
접어 버리면 불친절하다고 생각하기 때문에 만약을 위해 써 두면,
Gemfile에 다음을 기재
gem 'acts-as-taggable-on', '~> 6.0'
번들 실행
$ bundle
Tag 관련 테이블 만들기
$ rake acts_as_taggable_on_engine:install:migrations
$ rake db:migrate
모델
기본적으로 사용하는 측(이번에 말하면 Restaurantant)의 Model에 acts_as_taggable_on을 기재한다.
이번은 태그에 이름을 붙이고 있기 때문에 이하와 같은 표기가 되어 있지만 acts_as_taggable 밖에 쓰지 않으면 디폴트는 tag라는 명칭이 된다.
restaurant.rb
class Restaurant < ActiveRecord::Base
acts_as_taggable_on :cuisines
컨트롤러
스트롱 파라미터에도 기재. 이번 cuisine의 명칭을 붙이고 있으므로 변수로서는 cuisine_list가 된다.
배열로 정의하므로 파라미터 뒤쪽에 기술한다. 콜론의 위치에도 주의.
restaurant_controller.rb
def restaurant_params
params.require(:restaurant).permit(
:id, :other,
cuisine_list: []
)
보기
여기에서 별로 정보가 나오지 않는 곳. ul, li로 작성한 리스트로 내는 경우의 예가 된다.
이번에는 Cuisine이라는 모델 전 건 내고 그 중 cuisine_list에 포함되어 있는 것이 있으면 체크를 넣는다는 만들기가 되어 있으므로 이런 표기가 된다.
한층 더 중요한 점이지만, label 태그와 그 뒤에 오는 input 태그의 id의 명칭을 맞추지 않으면 IE11과 Firefox에서 체크 박스가 움직이지 않는다는 문제가 있으므로 여기를 맞출 필요가 있다. 뭔가 이상하다고 생각하면 input 태그의 id 속성을 확인하는 것이 좋습니다.
restaurant/create.rb
ul.field.option_check
- Cuisine.all.each do |cuisine|
li
label for="restaurant_cuisine_list_#{cuisine.id.to_s}"
= r.check_box :cuisine_list, {multiple: true, checked: @restaurant.cuisine_list.include?(cuisine.id.to_s)}, cuisine.id.to_s, ''
span.checkbox = cuisine.cuisine_name
덧붙여서 여기는 slim으로 쓴 경우의 예이므로 다른 템플릿 엔진 사용하고 있는 경우는 적절히 읽어 주세요.
Reference
이 문제에 관하여(acts-as-taggable-on을 checkbox로 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hardreggaecafe/items/23e91b06e58a3dac58d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)