我有一个User对象,其格式如下:
User(id: integer, email: string, name: string, created_at: datetime, updated_at: datetime, school_id: integer)
我还有一个对象数组@schools
,它们都具有属性name
和id
对于新的用户视图,我想有一个下拉菜单,显示学校的名称(@school.name
)。我希望此下拉菜单将相应的@school.id
传递给Users
'控制器将下拉菜单中所选学校的特定id
与新用户school_id
属性相匹配。
在我看来,我有
<%= f.label :school_id %>
<%= f.select :school_id, options_from_collection_for_select(@schools, "id", "name") %>
但是,每当我故意发出错误(例如密码为5个字符而不是验证指定的6个)时,我会收到undefined method 'map' for nil:NilClass
错误。
答案 0 :(得分:0)
对我来说,使用db表创建select
的最可读方法是使用collection_select
<%= f.collection_select :school_id, @schools, :id, :name %>
如果您想使用select
<%= f.select :school_id, @schools.map { |school| [school.name, school.id] } %>