활성 산열을 사용하여 범주 선택
활성 산열을 사용하여 범주 선택
활동 산열이란 무엇입니까
모델 파일에 도도부 현명 등 변경되지 않은 데이터를 직접 기술함으로써 데이터베이스에 저장하지 않은 상태에서 데이터를 처리할 수 있다.또한 이Gem을 사용하면 데이터베이스에서 47개의 도도부 현명의 열을 만들지 않고 데이터를 관리할 수 있다.이번에는 내가 만들고 있는 응용 프로그램의 예를 들어 소개한다.
응용 프로그램의 설명으로 목표는 소득 분류(임금, 상여금, 부업 등) 등 고정된 옵션을 선택할 수 있는 것이다.
공식 페이지 여기서↓↓↓
https://github.com/zilkey/active_hash
Gem 설치
개발 환경 rails6.0.0
GemfileGemfile에서 추적↓↓↓gem 'active_hash'
bundle install을 계속 실행합니다.
모델 생성하기
Income 모델을 생성합니다.rails g model income
마이그레이션을 수행합니다.↓↓↓class Incomes < ActiveRecord::Migration[6.0]
def change
create_table :incomes do |t|
t.integer :category_id , null: false # 収入分類のカラム
t.integer :price , null: false # 金額
t.timestamps
end
end
end
prefecture에 밑줄로 id[_id]를 붙여야 합니다.id를 외부 키로 관리함으로써 ActiveHash와 관련된 수입 분류를 얻을 수 있습니다.
활성 산열에 대한 모델을 계속 생성합니다.데이터베이스에 새 테이블을 만들 필요가 없습니다.
다른 서류도 필요 없는 서류.class Category < 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: 'その他収入' }
]
# moduleを取り込み↓↓
include ActiveHash::Associations
has_many :incomes # incomeモデルとのアソシエーション
end
그리고 인컴 모형도 편집합니다.class Income < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :income_category
# category_idのid:1以外のときに保存できるバリデーションを設定(1は「--」です。)↓↓
validates :income_category_id, numericality: { other_than: 1}
end
뷰에서 드롭다운 목록에 범주 선택 표시
라우팅 및 컨트롤러를 편집한 후 뷰를 편집합니다.<%= form_with model: @income, url:incomes_path, local: true do |f| %>
<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"income-select"}) %>
<%= f.text_field :text, class:"text", placeholder:"金額" %>
<%= f.submit "保存する" ,class:"submit" %>
<% end %>
collection_select는 다음과 같은 형식으로 데이터를 표시할 수 있는 방법이다.이 때 () 내에는 1 매개 변수 (저장된 열 이름), 2 매개 변수 (그룹 데이터), 3 매개 변수 (저장된 항목, 표에 id로 저장), 4 매개 변수 (옵션에 표시된 열 이름, 여기는 수입 분류), 5 매개 변수 (선택 사항), 클래스 이름 순으로 표시됩니다.
이렇게 하면 아래 목록에서 수입 분류를 선택할 수 있다.
이렇게 ↓↓↓
이상!!!참고가 된다면 정말 기쁠 것 같아요!
만약 또 잘못이 있다면 지적해 주세요.
Reference
이 문제에 관하여(활성 산열을 사용하여 범주 선택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TAISEI-050523/items/59c6bd07a73c828170af
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gem 'active_hash'
rails g model income
class Incomes < ActiveRecord::Migration[6.0]
def change
create_table :incomes do |t|
t.integer :category_id , null: false # 収入分類のカラム
t.integer :price , null: false # 金額
t.timestamps
end
end
end
class Category < 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: 'その他収入' }
]
# moduleを取り込み↓↓
include ActiveHash::Associations
has_many :incomes # incomeモデルとのアソシエーション
end
class Income < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :income_category
# category_idのid:1以外のときに保存できるバリデーションを設定(1は「--」です。)↓↓
validates :income_category_id, numericality: { other_than: 1}
end
<%= form_with model: @income, url:incomes_path, local: true do |f| %>
<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"income-select"}) %>
<%= f.text_field :text, class:"text", placeholder:"金額" %>
<%= f.submit "保存する" ,class:"submit" %>
<% end %>
Reference
이 문제에 관하여(활성 산열을 사용하여 범주 선택), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TAISEI-050523/items/59c6bd07a73c828170af텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)