Ruby on rails RubyonRails-模型中的下拉列表

Ruby on rails RubyonRails-模型中的下拉列表,ruby-on-rails,Ruby On Rails,我想用RubyonRails从模型公司创建一个下拉列表,该公司有一个项目名称。我希望下拉列表的长度和Company.count dynamic一样长 例如,公司中的3个要素: <%= f.select :company_brand, [[Company.find(1).name, Company.find(1).id],[Company.find(2).name, Company.find(2).id],[Company.find(3).name, Company.find(3).id]

我想用RubyonRails从模型公司创建一个下拉列表,该公司有一个项目名称。我希望下拉列表的长度和Company.count dynamic一样长

例如,公司中的3个要素:

 <%= f.select :company_brand, [[Company.find(1).name, Company.find(1).id],[Company.find(2).name, Company.find(2).id],[Company.find(3).name, Company.find(3).id]]%>
集合\u select将提供您所需的:

集合\选择对象、方法、集合、值\方法、文本\方法、选项={}、html \选项={}

对象类的方法的现有返回值集合的返回值和标记。将选择对实例对象调用方法返回的值。如果调用方法返回nil,则在选项哈希中没有include:prompt或:include_blank时,不会进行任何选择

:value_方法和:text_方法参数是要对集合的每个成员调用的方法。返回值分别用作每个标记的值属性和内容。它们也可以是响应调用的任何对象,例如proc,它将为集合的每个成员调用以检索值/文本

对于您的用例,这意味着将代码更改为:

<%= f.collection_select(:company_brand, Company.all, :id, :name) %>
集合\u select将提供您所需的:

集合\选择对象、方法、集合、值\方法、文本\方法、选项={}、html \选项={}

对象类的方法的现有返回值集合的返回值和标记。将选择对实例对象调用方法返回的值。如果调用方法返回nil,则在选项哈希中没有include:prompt或:include_blank时,不会进行任何选择

:value_方法和:text_方法参数是要对集合的每个成员调用的方法。返回值分别用作每个标记的值属性和内容。它们也可以是响应调用的任何对象,例如proc,它将为集合的每个成员调用以检索值/文本

对于您的用例,这意味着将代码更改为:

<%= f.collection_select(:company_brand, Company.all, :id, :name) %>
您可以这样做:

您可以这样做:


你可以试试这个,我想这对你有帮助

<%= f.select :company_brand, options_from_collection_for_select(Company.all, "id", "name") %>

你可以试试这个,我想这对你有帮助

<%= f.select :company_brand, options_from_collection_for_select(Company.all, "id", "name") %>

你能解释一下你的代码吗?它与OP的例子有什么不同?@eventHandler请参考这个链接,它提供了关于RubyonRails中表单帮助器的更清晰的解释。你能解释一下你的代码吗?它与OP的例子有什么不同?@eventHandler请参考这个链接,它提供了关于RubyonRails中表单帮助器的更清晰的解释。