2012-03-28 34 views
0

我有這樣的事情:在我看來在哪裏把「智能請求」的代碼在rails應用程序中做數據庫?

:在我的部分 '秀'

<%= render :partial => 'show', :locals => { :employee => flash[:selection][:employee] } %> 

<p> 
    <b>Manager:</b> 
    <%= Employee.find(employee.employee_id).first_name %> <%= Employee.find(employee.employee_id).last_name %> 
</p> 

問題: 我覺得這是不從部分模型(如:Employee.find(employee.employee_id).first_name)中請求某些內容的好方法...而且在一個視圖中看起來也是......是不是? 我應該在哪裏將這樣的「智能請求」代碼放到數據庫中,然後我應該如何從部分調用它?

UPD1 我不喜歡的東西,你以前建議... 在我的控制器渲染視圖(因此這會使部分),我覺得這個員工,並把它變成閃光之前[:選擇] [:員工] ... 此員工有許多列,如:first_name,last_name,...,最後是employee_id。後者employee_id是當前員工的經理(flash [:selection] [:employee])。 我想在部分內容中顯示所有員工的字段。所以我將flash [:selection] [:employee]像員工一樣傳遞給partial,然後顯示所有東西,如:employee.first_name,...最後,我想顯示這個employee.employee_id不像integer id,但實際上找到在數據庫通訊員工,並把它的名字和姓氏... 好吧,在呈現我的看法之前,我可以不僅設置@employee,而且它的@manager,然後將這些值傳遞給我的部分... 但是..這似乎有點「太多了,只是爲了在一個地方展示這個@經理的名字和姓氏...... 對不對?或者這是軌道中的常見用法,是不是?

+0

你爲什麼不有assoaition員工連接到它的經理嗎? – 2012-03-28 07:42:51

+0

感謝弗雷德裏克,我不知道什麼是關聯,但我會盡力弄清楚,謝謝你的指導! – yashaka 2012-03-28 08:21:05

回答

1

我會把它放在渲染該視圖的控制器中。在你的控制器動作中初始化一個實例變量,這可以從你的視圖和partials訪問。事情是這樣的:

@employee = Employee.find(...) 

在最近版本的Rails的,該實例變量傳遞給一個部分是那麼容易,因爲:

<%= render 'show', :employee => @employee %> 

然後在你的部分,你會怎麼做:

<p> 
    <b>Manager:</b> 
    <%= employee.first_name %> <%= employee.last_name %> 
</p> 
+0

感謝您的建議... 對不起,似乎我錯過了我原來的問題描述中的一些細節...請看看我的UPD1以上... – yashaka 2012-03-28 08:15:16

+0

看起來你應該定義員工和經理之間的關聯,因此你可以能夠從你的部分內容中執行諸如employee.manager.first_name之類的內容。 – Nobita 2012-03-28 08:18:47

+0

好的,非常感謝您的方向! 我會谷歌「鐵路協會」,並會盡力做到這一點! – yashaka 2012-03-28 08:20:09

0

謝謝大家,我解決了這個問題,提供了以下關聯:

class Employee < ActiveRecord::Base 
    #... 

    belongs_to :manager, :class_name => "Employee", :foreign_key => "employee_id" 
end 

,然後進行從部分對應的呼叫:

employee.manager.first_name 
相關問題