【问题标题】:Adding nested resource in Rails API that doesn't require top resource id in path在 Rails API 中添加不需要路径中的顶级资源 id 的嵌套资源
【发布时间】:2015-12-21 03:28:28
【问题描述】:

我是 Rails 和 Ruby 开发的新手,所以如果有人回答了这个问题,我深表歉意,我找不到任何可以解决我的确切问题的东西。

假设我想向资源添加一个 RESTful 端点,比如说“表单”。我用于实际编辑和创建表单的默认 CRUD 操作。我想添加一个端点以允许 POST 提交表单。让我们不要陷入这个计划和设计的困境,我只是以这个为例来说明我的问题。如果我将“提交”作为嵌套资源(无论如何这对我来说真的没有意义——在这种情况下,提交是一个动作,而不是资源),为我生成的路由需要一个关联表单的 :id 。我明白了。所以会生成这样的东西:

/forms/:id/提交

但是,假设我希望在 url 中仍然有 /forms(所以我似乎不想要一个浅路径范围 - 即我不想做 /submission)看起来像这样:

/表格/提交

我该怎么做?我的问题是我试图将方形钉子装入圆孔并使其成为资源吗?我是否需要在我的资源路由之外使用类似这样的显式和非 RESTful 的东西:

发布“表单/提交”=> 'forms#submission'

如果我缺少更多特定于 Rails/Ruby 的内容,请告诉我,因为我还在学习。但是,我觉得这更像是一个 REST 问题,而且我的处理方式不正确。

基本上,我已经有一个 POST 操作来创建一个表单,所以在一天结束时,我只是想向资源“表单”添加另一个 POST 操作,但不需要路径中的表单 ID,但是仍然想要路径中的形式。在这种情况下,我不在乎用户提交了哪个表单,我们对它们一视同仁,因此 id 不相关。我唯一关心表单 ID 是在请求​​或编辑表单时。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    在您的路线文件中:

    namespace :forms do
      resources :something
    end
    

    【讨论】:

    • 如果我还想要“表单”资源的默认 CRUD 路由,这仍然有效吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多