[カテゴリ]ドロップダウンでの入力を作成する


Pickup

@categories の作り方いろいろ

神経質にやる

@categories = Category.allTodosControllerの中で行う方が良いでしょう。

class TodosController < ApplicationController

  # … 省略

  def new
    @todo = Todo.new
    @categiries = Category.all # 例えばこんな形
  end

  def edit
    @categiries = Category.all # 例えばこんな形
  end

  # … 省略

end

少しゆるくやる

@categiesという変数が必要なわけではないので、下記のように中に埋め込んでしまっても良いと思います。

<%= select :page, :name, Category.all.map{|t| [t.name, t.id]} %>

mapでやっていたこと

@categories.map{|t| [t.name, t.id]}

mapを使うと

  1. tに順番に@categoiesの中身Categoryモデルのインスタンスを入れながら処理をします。
  2. 各処理で[t.name, t.id]の形の配列を作って返してくれます。
  3. さらにそれを配列にします。

結果、下記のような配列の配列が作成されます。この形をselectに渡すと、railsがいい感じに表示してくれる、という仕組みがあります。

[
  [ '日常生活', 1 ],
  [ '学校関係', 2 ]
]