10

我只是想知道是否有人曾经构建过没有任何Show操作的 Rails 应用程序。

在我的应用程序中,如果用户从列表中选择一个项目,比如一个项目,他可能不仅想显示它,还想编辑它。

那么实施任何显示操作而是将所有记录链接到编辑表单是一种好习惯吗?

我看到的唯一警告是用户可能会不小心编辑项目。但这可以通过使用 jQuery 在所有表单字段上设置禁用的默认属性来防止。这样,用户必须单击“编辑”按钮才能解锁表单字段以进行编辑。

这有意义还是我完全疯了?

谁知道,也许这会导致与 Rails 的 RESTful 架构发生冲突?

4

4 回答 4

1

我认为,show如果您正在构建一个简单的、命名空间的 CMS 后端,那么采取行动通常是没有意义的。Django-admin 省略了它,类似的路径/admin/blogs/post/241直接进入编辑表单。我认为这种方式是有道理的,使用面向前端的网站作为show操作。

它确实违反了 Rails 的默认路由约定,但并没有那么大,以至于您冒着升级的风险。

您可以像这样覆盖路由:

resources :posts, except: [:show] do
  get ':id' => 'posts#edit', on: :member
end

但是,我会说只是将路由保留为resources方法默认定义它们,并在其中抛出except选项以避免在有人尝试转到时丢失模板错误/posts/241。然后,您可以始终链接到编辑页面。

编辑:我会说,在构建 CMS 时,我确实喜欢使用该show操作,但不只是列出属性。我喜欢将它用作该记录的一种摘要,显示一些关键信息,创建时间/上次更新时间,版本列表以及编辑者(如果您喜欢这类事情),以及编辑、销毁或访问前端网站上的记录的链接。

于 2012-10-01T04:16:21.220 回答
1

第一个想法:

在我看来,这可能会使您的用户感到困惑,因为: 显示操作的常用网址如下所示:

产品/:id

但编辑看起来像:

产品/:ID/编辑

因此,如果您的一个用户只想查看(通过单击显示)项目,它可能会被显示的 url 混淆。你可以通过使用命名路由来解决这个问题,但我认为这肯定会与 REST 冲突。

第二个想法:

在实现 jQuery 逻辑只是为了对对象启用编辑操作之前,您应该使用带有显示和编辑页面/方法的内置机制,因为使用默认行为将保持可维护性和可读性更容易和干净。

如果我错了,请纠正我:)

于 2012-09-29T12:24:03.033 回答
0

单页网页是我们要走的路,尤其是 Ember.js 等。加载新页面以启用编辑这些天似乎有点过时了。您可以使用最好的宝石来处理它。

还有一个关于这个主题的 Railscast: http ://railscasts.com/episodes/302-in-place-editing

于 2013-06-25T10:46:50.097 回答
0

我更喜欢将edit.html.erb 重命名为show.html.erb,然后让编辑操作在最后呈现显示视图。

如果 edit.html 是您的 web 文件夹中的唯一文件,您可能只需将其重命名为 index.html 对吗?而不是在新的 .htaccess 文件中编写“Index edit.html”只是为了使 edit.html 成为默认索引文件。

或者,如果您希望将视图文件命名为“edit.html.erb”,则可以删除 show.html.erb,并让 show 操作渲染编辑视图(使用“render :edit”)。

我不建议完全省略 show 操作,因为这会使 product/:id/edit 成为唯一可访问的 URL,而 product/:id 将返回 404。

如果您希望您的规范 URL 是 product/:id/edit 或 product/:id,这取决于您,但 product/:id 至少应该呈现相同的视图或重定向到 product/:id/edit

于 2012-11-02T17:02:47.213 回答