options_from_collection_for_select包含涉及另一个表的棘手标签

时间:2015-01-15 03:47:40

标签: ruby-on-rails ruby forms

我在管理信息中心创建表单,您可以使用HTML选择更改公司的所有者;听起来很简单。

我希望将所有用户的ID(user.id)作为此select的值,但我想显示其全名,这些名称存储在另一个表(user_detail.first_name和{{1与第一个相关联。

这里有两个问题:

  • 如何使用options_from_collection_for_select
  • 从第一个表(user_detail.last_name)获取第二个表(user_detail)的数据
  • 如何将first_name与last_name混合使用(注意:我的UserDetail模型中的user方法可能对此有用)

谢谢你们;)

1 个答案:

答案 0 :(得分:1)

我不知道您的查询是如何从db中检索您要在select上显示的所有用户,但是使用includes方法从查询的另一个表中检索关联数据,像这样:

@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)