active_hash를 사용하여 도도부현 데이터 보이기
왜 active해시로요?
도도부현의 데이터 등 변경 가능성이 낮은 데이터는 산열로 관리할 수 있기 때문에 특별히 표를 만들 필요가 없다
이런 좋은 점이 있다.
이번 내용은 플리츠 앱 active입니다.왜냐면 해시를 이용하다가 넘어진 부분이 있어요.
비망록으로 정리한 거예요.
컨디션
Rails 5.2.3
Ruby 2.5.1
가져오기 방법
gem active_설치
gem 'active_hash'
bundle install을 실행합니다.active_해시 설치가 끝났기 때문에.
다음은 모형 제작을 진행한다.
모델 생성하기
우선address입니다.rb를 만듭니다.
rails g model adderss
만든 주소에서 다음 내용으로 편집class Address < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to_active_hash :prefecture
end
이 기술에서 잠시 후 제작된prefecture.rb와 합작할 수 있습니다,prefecture.rb의 내용을 이용할 수 있습니다.migrate 후 prefecture.rb를 만듭니다.
내용은 다음과 같다.
class Prefecture < ActiveHash::Base
self.data = [
{id: 1, name: '北海道'}, {id: 2, name: '青森県'}, {id: 3, name: '岩手県'},
{id: 4, name: '宮城県'}, {id: 5, name: '秋田県'}, {id: 6, name: '山形県'},
{id: 7, name: '福島県'}, {id: 8, name: '茨城県'}, {id: 9, name: '栃木県'},
{id: 10, name: '群馬県'}, {id: 11, name: '埼玉県'}, {id: 12, name: '千葉県'},
{id: 13, name: '東京都'}, {id: 14, name: '神奈川県'}, {id: 15, name: '新潟県'},
{id: 16, name: '富山県'}, {id: 17, name: '石川県'}, {id: 18, name: '福井県'},
{id: 19, name: '山梨県'}, {id: 20, name: '長野県'}, {id: 21, name: '岐阜県'},
{id: 22, name: '静岡県'}, {id: 23, name: '愛知県'}, {id: 24, name: '三重県'},
{id: 25, name: '滋賀県'}, {id: 26, name: '京都府'}, {id: 27, name: '大阪府'},
{id: 28, name: '兵庫県'}, {id: 29, name: '奈良県'}, {id: 30, name: '和歌山県'},
{id: 31, name: '鳥取県'}, {id: 32, name: '島根県'}, {id: 33, name: '岡山県'},
{id: 34, name: '広島県'}, {id: 35, name: '山口県'}, {id: 36, name: '徳島県'},
{id: 37, name: '香川県'}, {id: 38, name: '愛媛県'}, {id: 39, name: '高知県'},
{id: 40, name: '福岡県'}, {id: 41, name: '佐賀県'}, {id: 42, name: '長崎県'},
{id: 43, name: '熊本県'}, {id: 44, name: '大分県'}, {id: 45, name: '宮崎県'},
{id: 46, name: '鹿児島県'}, {id: 47, name: '沖縄県'}
]
end
이렇게 되면 모형 내의 준비가 완성된다.다음은 컨트롤러 안을 편집합니다.
편집 컨트롤러
이번엔 플리츠 앱이라서 제품controller.rb 내의 new 동작에서 기술합니다.
def
@address = Prefecture.all
end
이렇게 하면 @address에서prefecture를 사용할 수 있습니다.rails c도 확인했어요.
아래는 이미 부러졌지만 꺼낸 것 같다.
이어서view 파일에서form의 기술을 편집하면 사용자는 도도부현을 선택할 수 있습니다.
뷰 파일 편집, 도도부현 데이터 표시 여부 확인
= form_for @product do |f|
의 기술 =f.textfield, = f.text_area 형식으로 입력 창 만들기f.collection_select :prefecture_id, Prefecture.all, :id, :name
표를 설정하고 싶은 곳에 상술한 내용을 기술하고 투고해 보세요.오류가 발생했습니다...
binding.pry로 prefecture를 꺼낼지 확인하기
잘 꺼내라...
form의 기술에서 오류가 있을 수 있으므로 다음과 같은 내용으로 변경합니다
= f.select :prefecture_id, Prefecture.all, :id, :name
다시 오류가 발생했습니다...
form 이외에 이상한 점이 있는지 찾아보세요.
제품표에prefecture의 입력을 반영하는prefectureid가 존재하지 않습니다.
이렇게 되면 안에 물건이 있어도 용기가 없고 오류가 발생하는 것도 당연하다
method error는 글자 그대로 method를 정의하지 않은 오류가 있을 뿐만 아니라 컴퓨터 측에서 보낸'이것이 무엇인지 모르겠다'는 정보도 간단하게 알 수 있다.
열 추가 및 확인 후
설치를 순조롭게 끝내다.
끝맺다
첫 번째 active해시를 설치할 때 힘든 점이 많지만 사용하기에 편리한 것 같아요.
다만 잘못된 내용도 간단한, 조금 일찍 해결된 내용...
아직 초보자의 정수를 벗어나기 어렵다
Reference
이 문제에 관하여(active_hash를 사용하여 도도부현 데이터 보이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Asaiii12/items/92180e4012ef4f01101e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)