ruby on rails-如何生成一个唯一的ID,然后将其作为URL



这是etherPad工作流:

load http://ietherpad.com
click 'new pad' which takes you here: http://ietherpad.com/ep/pad/newpad

然后重定向到这样的东西:

http://ietherpad.com/1vcs1YUf1Z

我怎样才能在铁轨上做到这一点?

  1. 让我的rails控制器的新方法生成一个UID,然后重定向
  2. 我的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天或其他时间的"尚未保存的"文档。

听起来怎么样?

相关内容

  • 没有找到相关文章

最新更新