[英]ruby on rails how to use FormOptionHelpers to create dynamic drop down list
我检查了一些教程,但是我对这种方法中的参数感到困惑
collection_select(对象,属性,集合,value_method,text_method,options = {},html_options = {})
我有一个地图模型,包括::area,:system,:file
我想从数据库中读取:area到一个下拉列表,然后让用户选择一个
我已经在视图中执行了@map = Map.all
方法应该是什么?
特别是参数“属性”。 在很多教程中,人们在此处放置“ id”。 但是我不知道“ id”是什么,在我的情况下,我不需要任何其他值,只需要“ area”。
我不能完全确定您在这里要问什么,但是如果您尝试选择要用于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是用于填充下拉列表的选项
从您的问题尚不清楚该区域填充了什么模型。
通常,在相关模型之间使用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是select中显示的项目。 最后一个(可选)参数说要包含一个空白条目。
您可能需要以下内容:
<%= f.collection_select(:map_id, :id, @map, :area) %>
但是,如果要填充的模型具有area属性(而不是链接到地图的ID),则可能需要使用:
<%= f.collection_select(:area, :area, @map, :area) %>
这指定将使用Map的area属性填充接收表的area属性,该属性也将用作select中的“描述”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.