Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 XML解析——我应该将此功能放在控制器或模型中吗?_Ruby On Rails_Xml_Model_Controller_Nokogiri - Fatal编程技术网

Ruby on rails Rails XML解析——我应该将此功能放在控制器或模型中吗?

Ruby on rails Rails XML解析——我应该将此功能放在控制器或模型中吗?,ruby-on-rails,xml,model,controller,nokogiri,Ruby On Rails,Xml,Model,Controller,Nokogiri,我有一个Rails应用程序,它充当XML服务API的传递 主要用例如下所示: 用户通过将参数发布到Rails。为了简洁起见,假设表单只提交了zip\u code=90010 Rails采用zip\u代码,并使用RestClient通过GET请求查询外部XML服务API: 报告响应通过XML返回。我想通过Nokogiri解析XML,并通过report.HTML.erb输出一个普通的HTML视图 我正在努力找出把我的XML(Nokogiri)代码放在哪里。我应该在模型中处理XML还是在控制器中进行所

我有一个Rails应用程序,它充当XML服务API的传递

主要用例如下所示:

  • 用户通过将参数发布到Rails。为了简洁起见,假设表单只提交了
    zip\u code=90010
  • Rails采用
    zip\u代码
    ,并使用RestClient通过GET请求查询外部XML服务API:
  • 报告响应通过XML返回。我想通过Nokogiri解析XML,并通过report.HTML.erb输出一个普通的HTML视图
  • 我正在努力找出把我的XML(Nokogiri)代码放在哪里。我应该在模型中处理XML还是在控制器中进行所有解析

    我知道这两种方法都有效,但我想知道最好的做法是什么。这也不是一个后台XML提要抓取,所以它不适合作为一个夜间运行的延迟作业。它必须全天候响应动态请求

    请记住,为了优化,我已经从我的应用程序中删除了ActiveRecord。此应用程序不接触任何数据库。它基本上是传递给XMLAPI的,XMLAPI将为客户端呈现HTML输出

    我读过最好使用“瘦控制器”和“胖模型”,但我看到的大多数Nokogiri示例都有
    doc=Nokogiri::XML(RestClient.get(myurl,myparams))
    控制器中的类型代码

    所以。。。模型还是控制器


    谢谢

    我将把代码放在一个类中,该类将获取xml并为您解析xml

    这样就更容易对类进行单元测试,以便对返回的XML进行解析或任何其他操作

    该类可以放在lib文件夹中,或者如果它有点像伪模型(带有XML数据库),也可以放在模型中。这主要取决于类是什么以及您希望如何构造代码库


    更新:加上这种方法,即使您将服务换成其他服务,您的代码库也可以保持不变,因为您的代码库与此类交互,所以只需对此类进行更改。界面优势:)

    好的,谢谢。与传统的Rails模型相比,在/lib文件夹中使用类时,是否有任何性能方面的考虑因素。非常小的一点,因为使用了一个新的对象/类,大约100分之一秒。