这几天我一直在努力解决这个问题,但什么也做不了。我一直在根据 Michael Hartl 的精彩教程构建我的第一个应用程序:http ://ruby.railstutorial.org/ 。此外,我已经尝试过本教程,但我的代码和他的代码之间的差异对我来说太大了,无法遵循。
我的应用程序与 Michael Hurtl 的不同之处在于,我正在尝试创建一个网站,您可以在其中发布剩余的油漆罐(而不是微博,AKA twitter)。当我创建应用程序时,我在 Paints 模型中有一个名为“color_family”的列。现在我希望将其从文本字段更改为具有预定值的下拉列表,例如“红色”、“橙色”、“黄色”、“绿色”等。
我从生成一个新的脚手架开始:
rails generate scaffold Color_Family family:string
然后我生成了一个迁移:
rails generate migration AddColor_FamilyToPaints family_id:int
并将其全部迁移。
然后我创建了关联
class ColorFamily < ActiveRecord::Base
has_many :paints
end
和
class Paint < ActiveRecord::Base
attr_accessible :family_id, :name, :hex, :location, :quantity, :additional_info
belongs_to :user
belongs_to :color_family
...
end
这就是我迷路的地方,我尝试遵循的任何教程都会破坏一切。我在哪里定义我预先确定的 color_families 列表?
对我来说,创建一个新模型是否值得?我之前在表单字段中尝试过:
<%= form_for(@paint) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.label :color_family %>
<%= select_tag(:color_family, options_for_select([['Red', 1],
['Orange', 2],
['Yellow', 3],
['Green', 4],
['Blue', 5],
['Purple', 6],
['Black', 7],
['Grey', 8],
['White', 9],
['Cream', 10],
['Brown', 12]])) %>
虽然它为我创建了一个下拉列表,但当我添加新油漆时它从未捕获过信息。
任何帮助是极大的赞赏。此外,一个教程的链接可能会给我最大的帮助,因为我对 RoR 和后端的东西很陌生。