2012-03-28 33 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 
相关问题