Generate URL slugs and permalinks with this Ruby on Rails plugin.
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
MIT-LICENSE
README.rdoc
TODO
init.rb
rakefile

README.rdoc

Acts as slugable readme

Generates a URL slug based on a specific fields (e.g. title).

A url slug is a string derived from a specific field which can the be used in a URL. For instance, a page with the title My page would have a URL slug of my-page.

The slug is generated on save and create actions. If the field has an existing URL slug (like when editing an existing record) the URL slug is preserved.

URL slugs are unique within the specified scope (or all records if no scope is defined). If the slug already exists within the scope, -n is added (e.g. my-page-0, my-page-1, etc…

Installation

./script/plugin install git://github.com/alexdunae/acts_as_slugable.git

Usage examples

In your target table, add a column to hold the URL slug.

With scope

class Page < ActiveRecord::Base
  acts_as_slugable :source_column => :title, :target_column => :url_slug, :scope => :parent
end

Without scope

class Post < ActiveRecord::Base
  acts_as_slugable :source_column => :title, :target_column => :url_slug
end

A sample link

link_to @page.title, :action => 'show', :url_slug => @page.url_slug

Testing

The unit tests for this plugin use an in-memory sqlite3 database (www.sqlite.org/).

To execute the unit tests run the default rake task (rake). To execute the unit tests but preserve to debug log run rake test.

Credits

Created by Alex Dunae (dunae.ca/), 2006-09, though it takes a village to raise a plugin:

Thanks to Andrew White (pixeltrix.co.uk/) for fixing a conflict with acts_as_list.

Thanks to Philip Hallstrom (pjkh.com/) for pointing out some redundant code.