0

我一直在 Stack Overflow、http://api.rubyonrails.org/和其他地方的 Rails 文档中查看很多帖子。我对应该传递多少个参数感到非常困惑。我看过4和5。这就是我想做的。

我有一个带有国家名称的表格,我想使用另一个带有国家列表的表格将其更改为下拉列表。

我表单上的当前代码是:

<%= f.text_field :country %>

国家在另一个表用户上。而不是让人们输入国家,我希望他们从表中选择国家列表名称而不是表中的 id,然后使用表中的名称来更新表用户上的国家

我仍在学习当前的数据库术语。我习惯于使用数据库、数据库中的表、表中的记录/行、记录上的 field.column 等。

我将如何编码 collection_select 语句以从另一个表中生成国家名称列表?

我几乎整天都花了几个小时试图弄清楚这一点。不知何故,我能够弄清楚如何使用 seed.rb 来加载我的 Country 表。

我正在使用 Rails 3.2.3 和 Ruby 1.9.3。我正在使用 PostgreSQL 数据库。

任何帮助,将不胜感激。

4

1 回答 1

0

根据是否设置了与另一个表的正确关系“例如 belongs_to 或 has_many”,您可以执行类似的操作。

<%= collection_select(:some_other_active_record, :country, Country.all, :id, :name)  %>

应该呈现为

<select name="some_active_record[country_id]">
   <option value="1">USA</option>
   <option value="2">Canada</option>
   <option value="3">Mexico</option>
   [...]
</select>

您应该阅读此页面http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

第一个参数是类的实例(“Active Record / table”),用于表单的选择标签。

第二个是方法调用,以获取与选择标签对应的对象属性,例如国家如何属于_您的主要活动记录,即“country_id / contry_ids”

第三个参数是代表标签的对象数组。基本上你所有的国家,即..“Country.all”

第四个是方法的名称,当在集合的成员上调用该方法时,会返回代表标签的子对象数组。基本上是用 Country.all 找到的国家实例的 id,它被放入 html value="some country id"

下一个参数是如何显示国家名称。

接下来是一组选项,我不打算赘述。

于 2012-06-01T22:55:21.700 回答