2013-05-01 74 views
0

所以tasking.point_of_contact显示是一个整数值,是相同的数作为其user.idname(名称被定义为:firstname + :lastname)我想显示。Ruby on Rails的,从多个表以信息在视图

如何获取tasking.point_of_contact中的值并使用它调用相应user.idname

现在我有:

<td><%= tasking.point_of_contact %></td> 

我想,要显示其user.id等于tasking.point_of_contactusername

用户与任务之间的关系是多对多的。

我希望我给你足够的信息。我可能是多余的,但我只想说清楚。

+1

请发布任务源码和point_of_contact(用户)active_record模型 – 2013-05-01 17:44:29

+0

格式化代码时,请使用反引号(')而不是粗体(**)。有关更多详细信息,请参见[帮助部分](http://stackoverflow.com/editing-help#comment-formatting)。 – tadman 2013-05-01 17:48:37

+0

很酷,下次我会用反引号格式化,我还是新来的!谢谢! – 2013-05-01 19:06:58

回答

3

如果你还没有在你的任务模型中建立你的关系,你想这样做。

belongs_to :user, :class_name => "User", :foreign_key => "point_of_contact" 

然后,在任何你正在做的初始查询

@tasking = Tasking.where(whatever) 

你要贪婪加载的用户,这样你就不会得到N + 1个问题(你可以google一下,只是一个有效的东西)。

@tasking = Tasking.includes(:user).where(whatever you want to find) 

然后在您的视图,你会做

tasking.user.name 
+0

为已经叫做'用户'的关系指定'User'类应该是多余的。 – tadman 2013-05-01 17:51:14

+0

真的,真的没有想到 – JoshEmory 2013-05-01 17:53:25

+0

嘿所以我很困惑 '@tasking = Tasking.includes(:user).where(无论你想找到)' 应该去。在我的控制器,模型或视图中?我已经按照你的建议更新了任务模型。我不清楚“(无论你想找什么)”?你的意思是像'.where(user.id = tasking.point_of_contact)'吗? 感谢帮助,RoR还是很新的! – 2013-05-01 19:31:23

0

有自动生成一些辅助方法,当你有一个has_and_belongs_to_many关系。具体而言,其他generated method应该会有所帮助。在你的情况下,它将是tasking.users。然而,我不确定你的设计是否正确...

+1

请不要使用'has_and_belongs_to_many'。这是来自Rails 1的一个遗留问题,比has_many x::通过y类型关系更难使用。 – tadman 2013-05-01 17:50:16

+0

我同意tadman,使用起来要干净得多:通过。 – JoshEmory 2013-05-01 17:50:46

+0

我会注意到在** no **源中的地方是'has_and_belongs_to_many'标记为已弃用。 – hd1 2013-05-01 17:55:26