0

我检查了一些教程,但我对此方法中的参数感到困惑

collection_select(对象、属性、集合、value_method、text_method、options = {}、html_options ={})

我有一个地图模型包括::区域,:系统,:文件

我想从数据库中读取:area到下拉列表,然后让用户选择一个

我已经在视图中做了@map = Map.all

方法应该是什么?

特别是参数“属性”。在很多教程中,人们把“id”放在这里。但我不知道“id”是什么,在我的情况下,我不需要任何其他值,只需要“区域”。

4

2 回答 2

0

从您的问题中不清楚该区域所填充的模型是什么。

通常,collection_select 用于相关模型之间。

例如。

class Category < ActiveRecord::Base
  has_many :products
end

class Product < ActiveRecord::Base
  belongs_to :category
end

为产品选择“类别”时,您的视图将具有以下内容:

<%= f.collection_select(:category_id, :id, Category.all, :name, include_blank: true) %>

这样做是将 Product.category_id 指定为使用 Category.id 值填充的属性。这些值来自 Category.all 集合,并且 Category.name 是选择中显示的项目。最后一个(可选)参数表示包含一个空白条目。

您可能需要以下内容:

<%= f.collection_select(:map_id, :id, @map, :area) %>

但是,如果您尝试填充的模型具有区域属性(而不是链接到地图的 ID),您可能需要使用:

<%= f.collection_select(:area, :area, @map, :area) %>

这指定接收表的 area 属性将填充 Map 的 area 属性,该属性也用作 select 中的“描述”。

于 2012-08-22T02:37:04.953 回答
0

我不完全确定你在这里问什么,但如果你试图在 html 表单中使用下拉选择,这个例子对你有帮助吗?

<% nations = {'United States of America' => 'USA', 'Canada' => 'Canada', 'Mexico' => 'Mexico', 'United Kingdom'=> 'UK'} %>
<% list = nations.sort %>
<%= f.select :country, list, %>

这里的国家是国家/地区的哈希,然后列表成为该哈希的排序副本。然后创建一个 html 下拉列表作为“f”表单的一部分。":country" 是模型中连接数据的部分,而 list 是填充下拉列表的选项

于 2012-08-21T23:09:07.140 回答