Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Rest link helpers for CanCan
tree: 2df1c7e874
Failed to load latest commit information.
lib added danish locale and updated generator to support this
log all specs pass
sandbox major refactoring done
spec updated README and generator
.document Initial commit to cancan-rest-links.
.gitignore Initial commit to cancan-rest-links.
.rspec first version
Gemfile updated deps
Ideas and Planning.txt
LICENSE Initial commit to cancan-rest-links.
README.markdown updated README and generator
Rakefile updated deps
VERSION updated deps
cancan-rest-links.gemspec Regenerate gemspec for version 0.2.3


CanCan REST links

REST link helpers for the CanCan permission system.

Rails 3 install

in Gemfile insert:

gem 'cancan-rest-links'  

Then run $ bundle install from the terminal.

Rails 3 usage

See the demo app at CanCan permits demo app

Configure your Rails 3 app for use with CanCan and some Authentication solution like Authlogic or Devise.

This locale file should be placed in config/locales in your Rails 3 app. The generator will create the above locale file as cream.en.yml

Use with CanCan permits

CanCan permits is a gem that lets you use Permits with CanCan to configure permissions.

REST links

These REST link helpers always check the current_user to see if the user has the required permission access for the required action on the given model. If not, the link is not rendered.

The following is a list of the REST links available and the required CanCan permission level for the model instance(s) that is linked to. Note that the CanCan :manage level implies full permission and :write full mutation access.

  • Index :read
  • Show :read
  • Create :create
  • Edit :edit
  • Delete :destroy

Typically the REST links are used within views, partials and view helpers. Example

<%= index_link(Post, 'To the posts') %>
<%= create_link(Post, 'Create a new post') %>

For the create and index REST actions, you can pass either an instance or a class of a model object. The other REST options only work with model instances.


index_link(Post, 'To the posts')
index_link(@post, 'All the posts')


create_link(Post, 'Create the post')
create_link(@post, 'Create the post')
### edit_link
edit_link(@post, 'Edit the post')
### delete_link
delete_link(@post, 'Delete the post')
### show_link
show_link(@post, 'Show the post')
## Locale file A locale file with the following structure can be created to define define labels for the various REST actions.
    confirm: 'Are you sure?'
        index: "Index"
        new: "New"
        edit: "Edit"
        delete: "Delete"
        show: "Show"  

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.

Something went wrong with that request. Please try again.