两个控制器,用于mongoDB的Ruby on Rails中的一个视图

时间:2015-10-17 07:18:52

标签: ruby-on-rails mongodb ruby-on-rails-4

我们可以在Ruby on Rails中将两个控制器渲染到一个视图中吗? 例: 我有两个名字控制器:
studentData_controller.rb
teacherData_controller.rb  因为它们的动作名称是相同的。即创建,更新,显示和删除与学生,教师相关的数据(但它们内部的逻辑是不同的)。

  

示例:

     

pay是两个控制器中的一种方法,但具有不同的逻辑:
  在teacherData_controller中:pay show检查大约20k到50k之间的工资范围   而对于studentData_controller,pay应该检查100k到200k之间的范围。

由于两者都有相同的字段。我使用相同的模型。使用单一视图呈现两个控制器会导致任何性能问题或任何与安全相关的问题。

2 个答案:

答案 0 :(得分:2)

这不是Rails的工作方式。

请求从Rack到路由器,它查找控制器和与请求URL和格式匹配的操作。

然后Rails会将请求传递给单个控制器。它永远不会调用两个控制器。

如果目标是在控制器之间共享代码 - 使用问题或其他一些继承或mixin。

两个控制器可以呈现相同的视图(在不同的请求上) - 但通常如果你发现自己这样做,你应该将共享代码放入局部而不是创建一个真正复杂的视图。

PS

您应该遵循文件/类/模块的Ruby(和rails)命名约定。

如果您的控制器名称为TeacherDataController,则文件应为:

teacher_data_controller.rb。如果不这样做将导致Rails自动加载文件的方式出现问题。另外,你永远不会和那些很酷的孩子坐在一起。

答案 1 :(得分:2)

不,您不能使用两个控制器来处理单个视图的单个请求。如果你想从两个不同的函数访问代码,那么使用它们的业务逻辑在helper / module中创建这两个函数,在你的控制器&中包含Helper。在同一个控制器中调用这两个函数。