collection_select并在轨道上保存红宝石中的记录

时间:2012-01-27 00:59:35

标签: ruby-on-rails

我正在尝试在rails上学习ruby,编写我自己的简单应用程序(待办事项列表)。我现在想要添加一个下拉菜单来选择要将任务分配给的用户。

我的schema.rb:

create_table "items", :force => true do |t|
t.text     "description"
t.string   "priority"
t.date     "date"
t.time     "time"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean  "done"
t.string   "name"
end

create_table "users", :force => true do |t|
t.string   "name"
t.datetime "created_at"
t.datetime "updated_at"
end

现在,在我的表格中,我有一个字段:

<%= f.collection_select(:user, User.all, :id, :name ) %>

它可以显示我的用户去。但是,当我尝试保存时,我当然得到:

ActiveRecord::AssociationTypeMismatch in ItemsController#create

我已经建立了关系(用户有很多任务,任务有一个用户)。我错过了什么? 非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

'items'表中没有'user_id'列。

rails g migration AddUserToItems user_id:integer
rake db:migrate

class Item
  belongs_to :user
  ...
end

class User
  has_many :items
  ...
end

collection_select(:item, :user_id, User.all, :id, :name)

答案 1 :(得分:0)

<%= collection_select(:item, :user_id, User.all, :id, :name, {:prompt=>true}) %>
                       1.     2.       3.         4.   5.       6.
  1. 模特

  2. 您在模型中存储的位置

  3. 收集用户

  4. 将保存的内容

  5. 显示的内容

  6. 提示“请选择”

  7. 这可能会有所帮助。