2016-08-13 10 views
0

私はアイテムモデルとリストモデルを持っていて、どちらも関連付けられています。一覧has_manyアイテムとアイテムbelongs_toリストアイテムをリストに関連付けるためにselect_tagをドロップダウンする方法

スキーマ:ユーザーが新しいアイテムを作成するとき、私はビュー(最も可能性が高いitems/new.html.erb)を作成したい

create_table "items", force: :cascade do |t| 
    t.string "name" 
    t.integer "list_id" 
    t.datetime "created_at",     null: false 
    t.datetime "updated_at",     null: false 
    t.boolean "completed", default: false 
    end 

    create_table "lists", force: :cascade do |t| 
    t.string "name" 
    t.integer "user_id" 
    t.datetime "created_at",      null: false 
    t.datetime "updated_at",      null: false 
    t.string "permission", default: "private" 
    end 

ので、ドロップダウンオプションがあるでしょうユーザーがどのリストに属しているかを選択することができます。最初にあらかじめ定義されたリストがあります(例:Listname"Home", "Work", "Personal")。ユーザーが作成するアイテムは、これら3つのいずれかに関連付けられます。

今、私は単純な項目名とlist_idを取る項目new.html.erbビューを持っています。

<%= form_for @item do |f| %> 

    <%= f.label :name %><br> 
    <%= f.text_area :name, size: "24x12" %><br> 
    <%= f.label :list_id %><br> 
    <%= f.text_field :list_id %><br> 
    <%= f.submit %> 

<% end %> 

list_idを手動で入力することは非常に不便です。調査した後は、select_tagが仕事をするのに最適なフォームヘルパーであるようです。

enter image description here

enter image description here

どのように私は、ユーザーがItemListにを関連付けることから選ぶことができます3ドロップダウンリストを表示するselect_tagを構築することができますか?

答えて

1

selectこれを実現するためにフォームを使用しているため、selectを使用することもできます。あなたは事前に定義されていList nameを述べたので、あなたはこのようにそれを行うことができます。

<%= f.select :list_id, options_for_select([['Home', 1], ['Work', 2], ['Personal', 3]]), {:include_blank => true} %> 

注:['Home', 1]家が空白含めるために、ここで1{:include_blank => true}のIDを持っています。

関連する問題