【发布时间】:2010-12-27 21:06:34
【问题描述】:
我有一个位置数组
locations = ["california", "new york", "florida"]
我有一个名为 foobar 的模型 has_many :places。
Place 模型 belongs_to :foobar 并有一个相关列 - name:string。
我有一个嵌套表单,允许我选择适用于 foobar 的位置。 为了提供选项,我根据控制器中的位置列表构建位置:
class FoobarController < ApplicationController
def edit
@foobar = Foobar.find(params[:id])
APP_CONFIG['locations'].each do |location|
@foobar.places.find_by_name(location) || @foobar.places.build(:name => location)
end
end
end
这几乎没有问题。我包含编辑方法的原因是因为这是有问题的方法。地点列表确实已填充,但已存在的 Foobar 地点显示在顶部。
举个例子! :)
我创建了一个新的
Foobar。以我的形式 我向下滚动到地方,我看到 选项“加利福尼亚”、“纽约” 和“佛罗里达”。我检查“加利福尼亚” 和“佛罗里达”并创建 Foobar。接下来我去编辑 Foobar。再次,我 向下滚动到这些地方,我看到了 我检查了两个选项。那是 太好了,除了顺序 出现的选项是 "california", "florida", "new york" - 选中的地方在顶部。
如何保留原始数组中位置的顺序?
谢谢!
更新:查看代码:
<%= f.fields_for :places do |place| %>
<div class="place">
<%= place.hidden_field :name %>
<%= place.check_box :checked %>
<%= place.label :checked, place.object.name %>
</div>
<% end %>
【问题讨论】:
-
您包含的代码并不直接控制任何东西的顺序。请发布您的查看代码。
-
发布了代码。谢谢!
标签: ruby-on-rails view associations nested-forms