我正在为注册表单开发动态下拉菜单的早期阶段。
我有四个模特。
City
has_many :burroughs
has_many :hoods
Burrough
belongs_to :city
has_many :hoods
Hood
belongs_to :city
belongs_to :burrough
User
Belongs_to :city
Belongs_to :burrough (this can be nil, or needs to be able to be nil)
Belongs_to :hood
我的目标是创建一个下拉菜单选择。纽约(城市)分为burroughs(即布鲁克林),然后分为引擎盖(即Park Slope,Williamsburg)。
对于另一个城市,我想跳过burrough,直接从城市(波士顿)到引擎盖(剑桥)虽然我还没有那么远。
这是我的表格
create_table "hoods", force: true do |t|
t.string "name"
t.integer "burrough_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "city_id"
end
create_table "burroughs", force: true do |t|
t.string "name"
t.integer "city_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "cities", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
end
create_table "users", force: true do |t|
t.string "name"
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
t.string "password_digest"
t.string "remember_token"
t.boolean "admin", default: false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.string "city_id"
t.string "hood_id"
t.string "burrough_id"
end
我一直在关注RailCast 88而且我已经走到了这一步:
<div class="field">
<%= f.label :city_id %><br>
<%= f.collection_select :city_id, City.order(:id), :id, :name, include_blank: true %>
</div>
<div id="neighbselect">
<%= f.label :burrough_id %><br>
<%= f.grouped_collection_select :burrough_id, City.order(:name), :burroughs*, :name, :id, :name, include_blank: true %>
</div>
<div id="neighbselect">
<%= f.label :hood_id %><br>
<%= f_collection_select :hood_id, Hood.order(:name), :id, :name, include_blank: true %>
</div>
我的问题是1)*那里的星号。我需要将burroughs定义为一种方法,但我在哪里做,以及我将其定义为什么?我不确定因为
2)我在阅读grouped_collection_select语句时遇到了困难。这里发生了什么?在grouped_collection_select之后:burrough_id是什么?基于名称排序的城市的不同的burroughss?然后我有未定义的方法,然后:name,:id。
我很欣赏这一点。我很难过!谢谢你们
修改 我已经走得更远了。我把它添加到我的用户控制器......
def burroughs
@burroughs = Burrough.all
end
我似乎还没有得到纽约市下面的所有bur ..检查图像......
答案 0 :(得分:0)
如果您遇到类似的问题,请确保您有rake:db migrate sit