出于想增加blog被baidu,google 等搜索引擎收录的条目,于是想到了SEO优化,首先从url的美化开始,rails3中可以使用friendly_id 这个gem, github地址:Friendly_id
##安装gem
$gem install friendly_id
##修改Gemfile,加入
$gem "friendly_id", "~> 4.0.0.beta14"
##给我的eyd_blogs表增加一个slug字段,rails 命令:
$rails g migration add_slug_to_eyd_blog slug:string
##修改生成的migration文件添加索引:
class AddSlugToEydBlog < ActiveRecord::Migration
def self.up
add_column :eyd_blogs, :slug, :string
***add_index :eyd_blogs, :slug, :unique=> true*** --新增
end
def self.down
remove_column :eyd_blogs, :slug
end
end
##到models目录下找到EydBlog添加:
class EydBlog < ActiveRecord::Base
***extend FriendlyId*** --新增
***friendly_id :title, :use => :slugged*** --新增
belongs_to :eyd_user
acts_as_taggable_on :tags
attr_accessor :blog_tags
validates :title, :presence => true, :uniqueness => true
end
##应用到mysql,数据库eyd_blog表增加一列:
rake db:migrate
##下面当你新建blog的时候,blog的title会自动增加到slug字段,但你find这个blog的时候就可以看到url的效果如下:
显示的是title不再是id
27 October 2011 Suzhou, China最后还个问题就是slug只能识别英文,中文无法识别,所以title中存在中英文时它只会拿出英文单词作为slug,这个问题的替代解决方案是用google translate api来翻译中文,这里就不再介绍了。(原创文章)