Abstraction of word-based slugs for URLs, w/ or w/o leading numeric IDs.
- Using Rails 2.1+
./script/plugin install git://github.com/norbauer/salty_slugs.git
- SaltySlugs defaults to
slug_column, and prepends the model ID. Upon creating/updating a record, the plugin will sluggify the
slug_columnis empty, otherwise it will sluggify the
slug_syncoption is set to true (defaults to false).
class Post "Do Not Mix Slugs and Salt!") @post.to_param => '23-do-not-mix-slugs-and-salt'
- You can also overwrite the defaults
class Product :name, :slug_column => :permalink, :prepend_id => false end @product = Product.create(:name => "Salt and Pepper Shaker") @product.to_param => 'salt-and-pepper-shaker'
- Use the
slugged_findclass method in your controllers, smart enough to modify the search conditions if prepending ID is found or not.
slugged_findis capable of accepting standard
ActiveRecord::Base#findoptions as a second parameter. If no records are found,
ActiveRecord::RecordNotFoundis raised to match behavior of
class PostsController :author) # catch exceptions if post is not found rescue ActiveRecord::RecordNotFound flash[:error] = "Post not found" redirect_to :action => :index end end
- If the
sync_slugoption is set to true, the
source_columnwill always be sluggified upon updating the record. This means that the slug will not be able to be manually edited, but will always be synchronized to the
- Add a word/regexp blacklist, so that they are sliced out of a string when sluggified (for example to remove .com, .net, etc)
Copyright (c) 2008 Norbauer Inc, released under the MIT license
Written by Jonathan Dance and Jose Fernandez