我不能使用任何宝石来创建干净的Url在rails中。相反,我正在推出自己的实施。我在routes.rb中创建了以下条目清洁网址与导轨
match "/:slug" => "cleanurls#index"
其中cleanurl是处理所有此类请求的控制器。在cleanurl控制器:
class CleanurlsController < ApplicationController
def index
slug = params['slug']
url = Url.where(:slug => slug).first
case(url.url_type)
when 'profile'
user_id = url.id.to_i
@profile = Profile_info.getProfileDetails(user_id)
render '/profiles/index'
end
end
end
我已创建存储该slug
,id
(如相关)和type of page
表urls
。现在,我只有个人资料页面来处理,但将来我会使用干净的网址来创建不同类型的网页。
我的第一个问题:
1)这个实现是否正确?考虑到表具有所有正确的索引,从性能的角度来看,这是可以的。
我提出了个人资料网址是这样的:
def self.makeProfileUrl(id,name)
name = name.strip.titleize
extension = User.where(:name => name).count - 1
slug = name.split(" ").join("-")
if extension != 0
slug += "-#{extension}"
end
Url.create(:slug => slug, :id => id.to_i, :url_type => 'profile')
end
我使用扩展到追加的情况下,他们是谁共享同一名称的用户计数。
问:
这是创建蛞蝓,并确保它是唯一正确的方法是什么?从另一个表中获取名称的计数似乎不正确。
为什么你不能使用宝石?提示:您已经通过使用Rails使用了其中的很多。 –
我使用了很多宝石,而且我一般都没有变化。对于这个特定的情况,但是我正在寻找我自己的实现。 –
但为什么要解决已经解决的问题?我的意思是,除非你为了教育目的而做这件事,否则没有理由轻视经过充分测试的宝石。 –