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_name
和 user_detail.last_name
) 与第一个关联。
这里有两个问题:
- 如何从第一个(
user
)和options_from_collection_for_select 得到第二个table(user_detail
)的数据
- 如何将他们的 first_name 与他们的 last_name 混合(注意:我的 UserDetail 模型中有一个
full_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)
我正在管理仪表板中创建一个表单,您可以在其中使用 HTML select 更改公司的所有者;听起来很简单。
我想捕获所有用户的 ID (user.id
) 作为此 select 的值,但我想显示存储在另一个 table 中的他们的全名(user_detail.first_name
和 user_detail.last_name
) 与第一个关联。
这里有两个问题:
- 如何从第一个(
user
)和options_from_collection_for_select 得到第二个table( - 如何将他们的 first_name 与他们的 last_name 混合(注意:我的 UserDetail 模型中有一个
full_name
方法,可能在这里很有用)
user_detail
)的数据
谢谢你们 ;)
我不知道你的查询是如何从数据库检索你想在 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)