筛选的选项选项

时间:2014-03-28 10:41:34

标签: ruby-on-rails ruby activerecord html-select

我真的陷入了困境。

我想要使用已过滤的选项填充select_tag的RoR应用程序,请说Physicians。这是我的select_tag视图:

<%= select_tag "phyID",options_from_collection_for_select(@physicians,'id','fullNamePhy'),:include_blank => true %>

在控制器中我有

@physicians=User.find_by_userType('Physician')

但我收到错误:

undefined method `map' for #<User:0x3b09820>

似乎我必须使用User.all而不是User.find。请让我知道任何解决方法。提前致谢

2 个答案:

答案 0 :(得分:2)

这应该有效:

@physicians = User.where(userType: 'Physician')

您收到错误是因为options_from_collection_for_select期望对象的行为类似于Array,例如ActiveRecord::Relation个实例。但find_by_*动态查找器返回表示单个记录的对象,在这种情况下为User实例。

顺便说一句,Rails中的列名按惯例命名为下划线而不是驼峰,如user_type

答案 1 :(得分:1)

您可以使用动态find_all_by查找程序

@physicians = User.find_all_by_userType('Physician')

find_by_column_names返回单个记录。 select_tag期望收集/记录数组

相关问题