在Rails中创建预览功能的最佳方法

3

我想在我的文章框架中实现预览功能。我只需要允许用户在新视图(/posts/new)中输入信息,然后用预览按钮替换提交按钮。

一旦点击了预览按钮,用户将被路由到预览页面(可能是/posts/new/preview)。如果用户想要更改,则会点击“返回”,如果他们对帖子感到满意,则可以提交帖子。

我找到了这篇文章(http://eyedeal.team88.org/node/105),但它似乎过时了。有什么好的方法来实现这个吗?

非常感谢, 托尼

2个回答

3
在创建页面提交后,在新的操作中构建对象,但不要将其保存到数据库中。然后在其显示视图中呈现该对象,并在新操作中设置标志以显示提交按钮。在您的显示视图中,始终使用一个包含所有要保存到数据库中的对象属性的表单,这些属性可以是隐藏输入字段或display:none的。当设置标志时,您会显示提交按钮。提交后,您将进入new_to_db操作,将对象保存到数据库中。

0

你发的链接是一种方法,但我更喜欢保存对象并设置一个布尔标志,比如说公共为false(在迁移中定义:default => false)。 然后你所做的基本上就是创建帖子并重定向到show操作,在那里你有 编辑按钮(渲染编辑操作), 发布按钮(自定义操作将公共标志设置为true) 和取消按钮(实际上删除帖子) 以及可能的稍后继续按钮,它保留帖子并重定向到任何其他页面,这样用户可以随时回来完成编辑。

当你需要显示所有帖子时,定义一个命名范围:visible,条件为['posts.public = ?', true],并在索引和类似操作中调用Post.visible而不是Post.all。你也可以定义一个默认范围,其中条件为['posts.public = ?', false],但请记住,如果你想找到不可见的帖子,你将不得不使用#without_scope。

这种方式比你链接中的方式更好,因为用户总是可以随时回来完成编辑并发布。但是你将在数据库中存储更多的对象,并且必须处理不可见的帖子(默认情况下不显示它们等等)。


我之前没有考虑到这个问题,你的建议很好。但是在这种情况下,我只想在保存到数据库之前能够预览,因为用户账户仍然是一个“if”想法。目前看起来有点像craigslist,不需要注册就可以发布。感谢你的见解! - slythic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接