Rails text_field 中显示外键 id 的相关值

VincentJiang · 2013年11月21日 · 最后由 mystery 回复于 2013年11月21日 · 2078 次阅读

我有一个表 users,一个表 roles(有一列叫 desc),其中表 users 有外键 role_id。 现在我想在 user 的 show.html.erb 中,显示 role_id 相对应的 desc,请问我的代码该如何写? 谢谢!

<%= f.select :role_id, Role.select([:id, :desc]).map{|r| [r.desc, r.id]} %>

#1 楼 @miclle 不成功呢,以下是 log:

#2 楼 @jxs471494539 你确定你的 roles 表里有 desc 字段么?

#3 楼 @miclle 我已经解决了,这样做,谢谢你的帮助。。。

<%= f.text_field :role_id, value: Role.find(@user.role_id).desc %>

#5 楼 @jxs471494539 我看错了,以为你是要在 new.html.erb 里去选择一个 role

如果你只是在 show.html.erb 里显示 role 信息,那直接 <%= @user.role.desc %> 即可

class User < ActiveRecord::Base
  belongs_to :role
end

#6 楼 @miclle 是的,这样也 OK

我建议你这么写

class User < ActiveRecord::Base
  belongs_to :role
  delegate :desc,  to: :role,  prefix: true,  allow_nil: true
end

在 show.html.erb 里显示 Role 信息 <%= @user.role_desc %>

需要 登录 后方可回复, 如果你还没有账号请 注册新账号