ruby-on-rails-3 - "new from copy"的 REST 路径

标签 ruby-on-rails-3 rest routes

对于某些模型,我希望提供允许用户根据现有记录的副本创建具有默认属性的新记录的功能。

我想知道什么是正确的 Restful 路线。

我最初的想法是它可能是 new 的参数。行动。 IE。借用Rails Guides examples ,而不仅仅是:

获取:/照片/新

还允许:

获取:/照片/新/:id

...哪里:id是用作模板的记录的 id。响应将是一个新的/编辑表单,与普通的旧表单相同 new但这些值将用现有记录中的数据预先填充。 new 可以轻松处理该参数(或没有它)。 Controller 方法。

替代方法似乎是创建一个新的 Controller 方法,例如 copy这也将接受现有记录的 id 并使用上述新表单进行响应。这对我来说似乎有点“不正确”,因为记录实际上并不是 已复制 直到用户保存新记录(可能在稍微编辑之后)。

蒂亚...

更新:我的问题不是“我如何在 Rails 中做到这一点?”,而是“它是 RESTful 吗?”

最佳答案

my question is not "how do I do this in rails?", it's "is it RESTful?"



不,不是。就此而言,GET /photos/new 也不是。 .在过去,Rails 似乎无可救药地陷入困境,在过去,它被认为是高级程序,用于 URI 上的 GET 返回一个 HTML 表单,然后将 x-www-form-urlencoded 数据POST 回同一个 URI。该 POST 的不透明度迫使他们发明新的动词作为 URI,例如 /photos/new ,当您可以使用 PUT 代替,或者至少使用相同媒体类型的 POST 时。

RESTful 复制 HTTP 资源的最简单方法是:
GET /photos/{id}/ -> [representation of a photo resource]
...make modifications to that representation as desired...
POST /photos/ <- [modified representation]

如果您正在为浏览器实现此功能,您应该能够很容易地通过 Ajax 执行这些操作,使用的 HTML 页面可能位于 /photos/manager.html/。插入与用户的互动。

关于ruby-on-rails-3 - "new from copy"的 REST 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251581/

相关文章:

android - 为什么此 CSS 不适用于 Android 上的 Chrome,但适用于其他地方?

java - Spring API REST 和 Cors 以及 AngularJS

javascript - 用于动态创建组件的 React v4 路由

CakePHP 在路由中使用正则表达式变量捕获?

javascript - Angular1.5 的哪个路由器?

ruby-on-rails-3 - TeamCity 和 Rails 部署

ruby-on-rails-3 - 事件记录查询数组字段中的值

ruby-on-rails - Rails - 3 列关联表?

rest - 如何在 Zend Framework 2 中发送 PUT 请求?

使用 REST 或 SOAP 的 Magento 商店的 Android 应用程序?