大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 为轨道中的所有Web服务调用创建一个包装器控制器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,我有两个控制器接受类似的参数和类似的方法.
代码如下
class employeeController < ApplicationController def list end end class DepartmentController < ApplicationController def list end end
终点将是http://localhost:3000/employee/list
&安培;
http://localhost:3000/department/list
创建包装控制器并调用任一控制器动作的最佳方式是什么?
这是正确的,我们检查某些参数并相应地创建对象,或者有更好的方法来做到这一点
class WrapperController < ApplicationController def list if params["which"].eql?("employee") data = employeeController.new(params).create else data = DepartmentController.new(params).label end end end
终点将是http://localhost:3000/wrapper/list
任何帮助将不胜感激.提前致谢.
无论如何,您可能想要更好地在Rails应用程序中组织您的业务逻辑.作为起点,我强烈建议您阅读this article.根据您的问题的有限信息,很难给您一个很好的答案为您的具体情况.
例如,您可以实现一个查询对象:
class employeesQuery def initialize(params) # initialize somE internal variables end def list # write code for fetching employees based on passed params end end class DepartmentsQuery def initialize(params) # initialize somE internal variables end def list # write code for fetching employees based on passed params end end class QueryFactory QUERIES = { "employee" => employeeQuery,"department" => DepartmentQuery } get self.get_query(resourcE) QUERIES[resource] || raise("Some exception") end end
现在你可以创建一个ListsController:
class ListsController < ApplicationController def index data = QueryFactory.get_query(params[:which]).list # render specific view based on requested resource # and rescue possible exception from get_query method end end
并在config / routes.rb中:
get "/:which/list" => "lists#index"
这可以稍后用更多的资源进行扩展,并且具有单独的查询对象,每个将使其更易于维护.唯一有问题的是如何渲染生成的结果,但您可以使用相似的模式来选择正确的模板来呈现.
如果要创建类似的对象模式,应该查看服务对象模式.它在链接的文章中描述.
你也可以用简单的方式解决你的问题,只需要改变一下config / routes.rb.
get "/:controller/list",to: :list
它将路由/员工/列表到employeeController和/ department / list到DepartmentController.并且基本上它将路由到任何有效的控制器,所以也许你想调整一点,并添加一些限制.
希望有帮助.干杯.
以上是大佬教程为你收集整理的ruby-on-rails – 为轨道中的所有Web服务调用创建一个包装器控制器全部内容,希望文章能够帮你解决ruby-on-rails – 为轨道中的所有Web服务调用创建一个包装器控制器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。