collection_select - 不了解如何编写语句

时间:2012-05-22 21:57:20

标签: ruby-on-rails-3.2 drop-down-menu

我一直在查看来自http://api.rubyonrails.org/和其他地方的Stack Overflow,Rails文档中的很多帖子。我绝对不知道应该通过多少参数。我见过4和5.这就是我想要做的。

我有一个国家/地区名称的表单,我希望使用另一个包含国家/地区列表的表格更改为下拉列表。

我表单上的当前代码是:

<%= f.text_field :country %>

国家/地区位于另一个表用户。我没有让人们在国家/地区输入内容,而是希望他们从表格中选择国家/地区列出名称而不是表格中的ID,然后使用表格中的名称来更新<表格上的强>国家用户。

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

我如何编写collection_select语句以生成另一个表中的国家/地区名称列表?

我花了几个小时几乎整天试图解决这个问题。不知何故,我能够弄清楚如何使用seeds.rb来加载我的Country表。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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

第一个参数是用于表单所用的select标记的类(“Active Record / table”)的实例。

第二个是方法调用,用于获取与select标记对应的对象的属性,例如country all_to你的主要活动记录,即“country_id / contry_ids”

第三个参数是表示标记的对象数组。基本上你所有的东西,即......“Country.all”

第四个是方法的名称,当在集合成员上调用时,它返回表示标记的子对象数组。基本上是通过Country.all找到的国家实例的id,它被放在html值=“some country id”

下一个参数是如何显示国家/地区的名称。

接下来是一组我不打算过的选项。