用铁轨清洁网址

时间:2013-10-22 06:43:33

标签: ruby-on-rails ruby ruby-on-rails-3 clean-urls

我无法使用任何宝石在rails中创建干净的Url。相反,我正在推出自己的实现。我在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

我创建了表urls,其中存储了slugid(相关)和type of page。现在我只有个人资料页面可以处理,但将来我会有不同类型的网页和干净的网址。

我的第一个问题:

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

我正在使用扩展程序附加一个计数,以防他们是共享相同名称的用户。

问题:

这是创建slug并确保它独特的正确方法吗?从另一个表中获取名称的计数似乎不正确。

1 个答案:

答案 0 :(得分:1)

回答问题#1:

我不知道你的总体目标是什么细节,但如果你愿意的话 有这样的URL基于数据库中的记录 - 然后是:它是 一个好方法。

回答问题#2(关于slu):

我宁愿使用更精细,更耐用的东西,如: https://github.com/norman/friendly_id

关于其他一些事情我的50美分:

这是你在Ruby / Rails中的第一个项目吗?如果是的话 - 恭喜! :) 我问,因为我注意到你在这里和那里使用骆驼箱......

此外:

user_id = url.id.to_i

为什么在这里调用这个#to_i方法?您是否将此ID设置为字符串 还是什么?

希望这有帮助