2013-05-01 45 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