这是etherPad工作流程:
load http://ietherpad.com
click 'new pad' which takes you here: http://ietherpad.com/ep/pad/newpad
然后重定向到这样的事情:
http://ietherpad.com/1vcs1YUf1Z
如何在rails中执行此操作?
由于
答案 0 :(得分:1)
绝对最简单的方法是:
在模型中,有一个回调
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
将此路线指向您控制器的编辑操作。在开始创建记录之前,您可能需要一种更健壮的方法来确定有效的slug,但这实质上就是“wiki”的工作方式。
这最终可能会创建一堆垃圾记录,因此您需要一种方法来扫描这些记录。某种状态如“待处理”或“未保存”会处理这种情况 - 当用户更新记录时,将状态从“未保存”更改为“已保存”,然后扫描任何30天前未保存的文档或东西。
听起来怎么样?