Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在何处放置“代码”;“智能请求”;在rails应用程序中使用数据库吗?_Ruby On Rails_Model View Controller - Fatal编程技术网

Ruby on rails 在何处放置“代码”;“智能请求”;在rails应用程序中使用数据库吗?

Ruby on rails 在何处放置“代码”;“智能请求”;在rails应用程序中使用数据库吗?,ruby-on-rails,model-view-controller,Ruby On Rails,Model View Controller,我有这样的想法: @employee = Employee.find(...) 我认为: <%= render :partial => 'show', :locals => { :employee => flash[:selection][:employee] } %> 'show',:locals=>{:employee=>flash[:selection][:employee]}%> 在我的部分“秀”中: <p> <b>Mana

我有这样的想法:

@employee = Employee.find(...)
我认为:

<%= render :partial => 'show', :locals => { :employee => flash[:selection][:employee] } %>
'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\u id).first\u name)的部分中询问一些东西不是一个好方法。。。从某种角度看,似乎。。。是这样吗? 我应该把这样的“智能请求”代码放在哪里,然后如何从partial调用它

UPD1 我做了你之前建议的事。。。 在我的控制器中,在呈现该视图之前(因此将呈现部分视图),我找到该雇员并将其放入闪存[:选择][:雇员]。。。 此员工有许多列,如:名字、姓氏……和最后一个员工id。后一个员工id是当前员工的经理(flash[:selection][:employee])。 我想在我的部分列表中显示所有员工的字段。所以我把flash[:selection][:employee]like employee传递给了partial,然后在那里显示所有的东西,比如:employee.first_name。。。最后我想展示这个employee.employee_id不像整数id,而是在数据库中找到对应的employee并把它的名字和姓氏。。。 在呈现我的视图之前,我不仅可以设置@employee,还可以设置它的@manager,然后将这些值传递给我的部分。。。 但是这似乎有点“仅仅为了在一个地方显示这位@manager的名字和姓氏,就做了太多了……”。。。
我说得对吗?或者这是rails中的常见用法,不是吗?

你说得对。你不应该在视图中使用查找器。初始化视图需要在控制器中使用的变量


我将把它放在呈现该视图的控制器中。在控制器操作中初始化一个实例变量,这将从视图和部分中访问。类似于以下内容:

@employee = Employee.find(...)
在Rails的最新版本中,将该实例变量传递给partial非常简单:

<%= render 'show', :employee => @employee %>
@employee%>
然后在你的部分,你会做:

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

经理:


多亏了大家,我解决了这个问题,提供了以下关联:

class Employee < ActiveRecord::Base
  #...

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

你为什么不让一个协会将员工与其经理联系起来呢?谢谢弗雷德里克,我不知道什么是联系,但我会努力弄清楚,谢谢你的指导!谢谢你的建议…对不起,我似乎在我最初的问题描述中遗漏了一些细节…请查看上面的UPD1…似乎你应该定义e和员工和经理,因此你可以做像employee.manager.first_name这样的事情。好的,非常感谢你的指导!我将谷歌“rails association”,并尝试这样做!