Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 选择和用户角色集合中的选项_Ruby On Rails_Ruby_Select - Fatal编程技术网

Ruby on rails 选择和用户角色集合中的选项

Ruby on rails 选择和用户角色集合中的选项,ruby-on-rails,ruby,select,Ruby On Rails,Ruby,Select,我有一个小表单,你可以选择通过用户添加为合作者 <%= f.select :user_id, options_from_collection_for_select(User.premium, "id", "username") %> 但是它给了我一个所有高级用户的列表,但是我希望能够看到高级用户和管理员用户 我试过(User.premium | | User.admin) 但它似乎不起作用,我仍然只获得高级用户。尝试使用OR条件。假设用户类型存储在user表的type列中

我有一个小表单,你可以选择通过用户添加为合作者

  <%= f.select :user_id, options_from_collection_for_select(User.premium, "id", "username") %>

但是它给了我一个所有高级用户的列表,但是我希望能够看到高级用户和管理员用户

我试过
(User.premium | | User.admin)


但它似乎不起作用,我仍然只获得高级用户。

尝试使用OR条件。假设用户类型存储在
user
表的
type
列中

  <%= f.select :user_id, options_from_collection_for_select(User.where("type = 'premium' OR type = 'admin'"), "id", "username") %>

尝试使用OR条件。假设用户类型存储在
user
表的
type
列中

  <%= f.select :user_id, options_from_collection_for_select(User.where("type = 'premium' OR type = 'admin'"), "id", "username") %>

最佳做法是在控制器中为您的视图提供所有数据。这意味着您不应该在视图中进行数据库查询。相反,在控制器中准备所有必需的变量

控制器
class UsersController
看法
最佳做法是在控制器中为您的视图提供所有数据。这意味着您不应该在视图中进行数据库查询。相反,在控制器中准备所有必需的变量

控制器
class UsersController
看法


我不明白您到底想选择什么?“高级”或“管理”或“基本”的下拉列表如下所示?另外,yr
User.premium
是错误的。我正在尝试创建premium(1)和admin(2)用户的下拉列表。为什么我的User.premium错了?
User.premium | | | User.admin
不起作用的原因是
| |
是一个布尔运算符。在Ruby中,它返回第一个真实的操作数,例如
true | | false
返回
true
nil | | 10
返回
10
。Ruby中除了
false
nil
之外的所有内容都是真实的,包括由
User.premium
返回的ActiveRecord::Relation对象,因此这是由
User.premium | User.admin
返回的值(并且从不计算
User.admin
)。如果您改为编写
User.admin | | User.premium
,则会返回
User.admin
的结果,并且不会对
User.premium
进行评估。我不明白您到底想选择什么?“高级”或“管理”或“基本”的下拉列表如下所示?另外,yr
User.premium
是错误的。我正在尝试创建premium(1)和admin(2)用户的下拉列表。为什么我的User.premium错了?
User.premium | | | User.admin
不起作用的原因是
| |
是一个布尔运算符。在Ruby中,它返回第一个真实的操作数,例如
true | | false
返回
true
nil | | 10
返回
10
。Ruby中除了
false
nil
之外的所有内容都是真实的,包括由
User.premium
返回的ActiveRecord::Relation对象,因此这是由
User.premium | User.admin
返回的值(并且从不计算
User.admin
)。如果您改为编写
User.admin | | User.premium
,则会返回
User.admin
的结果,并且不会对
User.premium
进行评估。此操作应涵盖所有内容
是!所有模型访问都应该发生在视图之外。我再说一遍,是的!这个应该涵盖所有内容
是的!所有模型访问都应该发生在视图之外。我再说一遍,是的!为什么要投否决票?这与上面的答案相似,这就是为什么否决票?这与上面的答案类似,并且有效
<%= f.select :user_id, options_from_collection_for_select(@users, "id", "username") %>

<!-- OR shorter -->
<%= f.collection_select :user_id, @users, :id, :username %>