これまでに作った機能について簡単にまとめていく。
今回は、
ラベル機能の作成
前提条件
何かのモデルのcrud機能があること
使用モデル
Taskモデル
カラム | データ型 | |
---|---|---|
1 | name | string |
2 | content | text |
Labelモデル
カラム | データ型 | |
---|---|---|
1 | name | string |
TaskLabelsモデル(記事中で作成)
カラム | データ型 | |
---|---|---|
1 | task_id | bigint |
2 | label_id | bigint |
TaskLabelsモデル(中間モデル)の作成
$ rails g model TaskLabels task:references label:references
アソシエーションの設定
app/models/task.rb
has_many :task_labels, dependent: :destroy has_many :labels, through: :task_labels
app/models/task_label.rb
belongs_to :task belongs_to :label
app/models/label.rb
has_many :task_labels, dependent: :destroy has_many :tasks, through: :task_labels
ストロングパラメーターの追加
app/controllers/tasks_controller.rb
class TasksController < ApplicationController def task_params params.require(:task).permit(:name, :content , { label_ids: [] }) end end
label_idsにより複数のラベルのパラメータを受け取る
フォームの設定
app/views/tasks/_form.html.erb
<%= f.collection_check_boxes(:label_ids, Label.all, :id, :name) %>
チェックボックスでラベルを選択
以上で作成完了