这是etherPad工作流:
load http://ietherpad.com
click 'new pad' which takes you here: http://ietherpad.com/ep/pad/newpad
然后重定向到这样的东西:
http://ietherpad.com/1vcs1YUf1Z
我怎样才能在铁轨上做到这一点?
- 让我的rails控制器的新方法生成一个UID,然后重定向
- 我的rails路由是否以某种方式在第一个/之后使用该uID来找到正确的记录并路由到控制器中正确的Pad Show方法
感谢
最简单的方法是:
在模型中,有一个回调
class Thing < AR::Base
# assuming you have a slug field
before_create :generate_slug
private
def generate_slug
self.slug = some_uid_algorithm
end
end
然后在控制器中,使用编辑操作。使用动态查找器find_by_slug
并接受id参数。如果找到该记录,则返回该记录,如果未找到则返回nil。如果找不到,请调用create
获取一个新的,它将调用您的slug回调。
def edit
@thing = Thing.find_by_slug(params[:id]) || Thing.create!
end
将此路由指向控制器的编辑操作。在开始创建记录之前,您可能想要一种更稳健的方法来确定什么是有效的段塞,但这本质上就是"wiki"的工作方式。
这可能最终会创建一堆垃圾记录,所以你会想要一种方法来清除这些记录。某种状态,如"挂起"或"未保存",可以解决这一问题——当用户更新记录时,将状态从"未保存的"更改为"已保存的",然后清除任何30天或其他时间的"尚未保存的"文档。
听起来怎么样?