options_from_collection_for_select 带有涉及另一个 table 的棘手标签

options_from_collection_for_select with tricky label involving another table

我正在管理仪表板中创建一个表单,您可以在其中使用 HTML select 更改公司的所有者;听起来很简单。

我想捕获所有用户的 ID (user.id) 作为此 select 的值,但我想显示存储在另一个 table 中的他们的全名(user_detail.first_nameuser_detail.last_name) 与第一个关联。

这里有两个问题:

谢谢你们 ;)

我不知道你的查询是如何从数据库检索你想在 select 上显示的所有用户,但使用 includes 方法从另一个 table 与查询,就像这样:

@users = User.includes(:user_detail)
# @user.includes(:user_detail).where(...)

然后,构建select_tag所需的数据结构:

@options_for_select = []
@users.each { |user| @options_for_select.push([user.user_detail.full_name, user.id]) }

最后在视图上,使用select_tag的options_for_select方法:

select_tag :owner, options_for_select(@option_for_select)