繁体   English   中英

ruby on rails如何使用FormOptionHelpers创建动态下拉列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM