1

我刚刚阅读了 option_from_collection_for_select 的 Rails API 定义。

 Returns a string of option tags that have been compiled by iterating over the collection   and assigning the result of a call to the value_method as the option value and the text_method as the option text

现在我对 Rails 很陌生,所以想知道是否有人可以将其分解成更小的部分并解释正在发生的事情,如果你愿意,可以将其简化,解释非常高级(目前对我来说很好)

谢谢

4

1 回答 1

4

使用Ruby on Rails API中的示例,假设您有一个Person具有id属性和name属性的模型。

假设您有一个创建新的表单project并将其分配给person. person也许您希望为您分配此项目的内容提供一个下拉选择。你可以用options_from_collection_for_select这样的东西。

<%= f.label :person, "Assigned Person" %>
<%= f.select(:person, options_from_collection_for_select(@people, "id", "name") )

f顺便说一下,这里指的@project是我们示例表单的变量。)

这样做是在您的选择下拉列表person中为实例变量中包含的每个选项创建一个选项@people。每个<option>标签都将具有分配给其属性的idof ,并且该选项的文本将是's 。personvaluepersonname

因此,如果您的@people变量包含[#<Person id: 1, name: "Brock Sampson">, #<Person id: 2, name: "Byron Orpheus">],您将获得如下 HTML 输出:

<label for="project_person">Assigned person"</label>
<select id="project_person" name="project[person]">
  <option value="1">Brock Sampson</option>
  <option value="2">Byron Orpheus</option>
</select>

这更有意义吗?

于 2012-11-09T13:50:31.633 回答