在Rails API中添加嵌套资源,该资源不需要路径

时间:2015-09-23 17:31:35

标签: ruby-on-rails rest routes rails-api

我是Rails和Ruby开发的全新手段,所以如果在某个地方得到解答我会道歉,我无法找到解决我确切问题的任何内容。

我想说我想在资源中添加一个RESTful端点,让我们说" form"。我用来实际编辑和创建表单的默认CRUD操作。我想添加一个端点以允许POST提交表单。让我们不要陷入计划和设计中,我用这个作为例子来澄清我的问题。如果我提交"提交"一个嵌套资源(对我来说真的没有意义 - 提交是一个动作,而不是这种情况下的资源),为我生成的路由需要一个:相关表单的id。我明白了。所以这就是生成的东西:

/形式/:ID /提交

然而,让我们说我仍然想在网址中添加/表单(所以似乎我不想要一个浅路径范围 - 即我不想做/提交)看起来像这样:

/形式/提交

我该怎么做?我的问题是我试图将一个方形钉固定在一个圆孔中并使其成为一种资源吗?我是否需要在资源路径之外使用像这样的显式和非RESTful的东西:

发布"表格/提交" => '形成#提交'

如果我错过了更多Rails / Ruby特定内容,请告诉我,因为我还在学习。但是我觉得它更像是一个REST问题而且我错误地解决了这个问题。

基本上,我已经有一个POST动作来创建一个表单,所以在一天结束时我只是想尝试向资源添加另一个POST动作"表单"但不需要路径中的表单ID,但仍需要路径中的表单。在这种情况下,我并不关心用户提交的表单,我们对它们的处理方式完全相同,因此ID并不相关。我关心表单ID的唯一时间是在请求或编辑表单时。

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在寻找的是命名空间。

在您的路线档案中:

namespace :forms do
  resources :something
end