个性化需求,到处都是个性化需求
是否还记得我之前提到过数据库有点像一堆魔术索引卡片,你可以使用任何一种方式搜索到它们?我们需要一种搜索特定页面记录的方法,这就是为什么你在这些路径当中看到url的原因。该url参数的内容就是告诉数据库需要检索什么记录。
我们可以使用网页标题作为参数,但是这样做会有一个问题:我们不喜欢网址当中存在空格、字母和特殊符号($和%)之类的东西。网页标题可能会含有那些东西,所以你需要一种将它们摒除的方法。
网页的唯一标识符就是其中一种个性化需求(Slug)。我的网页个性化需求(Slug)将会基于网页标题,而且根据以下规则使网络地址变得友好:
- 1.所有字母都是小写;
- 2.没有特殊字符——都是字母;
- 3.没有空格——所有空格都必须替换成破折号。
达到以上效果的方式就是创建一个接受网页标题的方法,然后将其转换成个性化需求(Slug)格式。棘手的代用必须由一种叫作正规表示式(regular expressions)的编程进行处理,它可以基于既定的规则在字符串内转换或查找文本。
正规表示式(regular expressions)可以非常神秘,但这是一种常见的用法,所以我能够找到一个标准的例子。我的方法如下:
# Converts page name into post slug
def slugify(content)
content.downcase.gsub(/ /, ‘-‘).gsub(/[^a-z0-9-]/, “).squeeze(‘-‘)
end
现在我可以使用个性化方法转换一个字符串,比如说将“Page-Title”转换成“page-title”,让它适合用于网址。
另外,如果我们连同网页标题一起储存个性化需求(Slug),我们可以使用:url参数来检索页面记录。
我把这个领域增加到DataMapper类别当中:
property:slug, String
现在,无论何时创建一个网页,我们都可以“个性化”这个网页的标题,将其储存到数据库当中,当想要检索它的时候,我们可以使用它来显示页面。这就是应用程序知道应该展示哪个页面的方法。