rails ajax调用是否应捆绑到自己独立的控制器中?

时间:2009-07-25 21:40:03

标签: ruby-on-rails ajax rest routing choice

不应该是RESTful的AJAX调用:

  1. 放入最符合其功能/视图的控制器,或
  2. 捆绑在一起成为他们自己独立的'Ajax'控制器?
  3. 我一直在做1,但我刚读过这篇文章(2725 diggs) http://zygote.egg-co.com/10-dirty-little-web-development-tricks/(见第9点)
    本章选择方法2.但他是PHP开发人员。

    一个好处可能是2可以通过执行类似'ajax /:action'而不是将成员添加到restful路径来清理路由。

    它似乎是一个 6.5,另一半是其他类型的面包师。

    你选择哪个选项?

2 个答案:

答案 0 :(得分:8)

我更喜欢第一种方法:

  1. 它在语义上是一致的。如果Ajax操作涉及资源XXX,那么您(以及其他编码人员)将知道在您的应用程序中查找内容的位置,这要归功于Rails约定。
  2. 如果你的应用程序对Ajax很重(现在大多数都是这样),你最终会得到一个庞大的AjaxController,它会否定整个RESTful的东西。其余的控制器将只是为了提供优雅降级的非JavaScript CRUD操作。
  3. 同样,测试你的Ajax控制器会有些混乱,因为你必须为应用程序的每个“ajaxified”资源设置场景 - 加载灯具,模拟等。

答案 1 :(得分:0)

您的“RESTful”控制器可能包含newedit个动作,它们都不是RESTful,它们只是为createupdate REST动作提供用户界面。 newedit没有单独的NonRestUIController或其他东西,它们保存在相关资源的控制器中,使控制器在语义上保持一致。类似地,与某组功能或某个资源相关的Ajax操作应保留在关联的控制器中。