Loudmouth adds comments to any model.
Install the gem (or add to your Gemfile & bundle install)
gem install loudmouth
Run the loudmouth installer to copy an initializer file to your app.
rails g loudmouth:install
Assuming you want to have 'users' comment on 'articles' add the following to your routes.rb:
comments_on :articles, :by => :users
run the generator to create the comment model (ArticleComments):
rails generate loudmouth Article User
run the new migrations
add the following to your Article model (app/models/article.rb)
and you get nested routes like these:
/articles/:article_id/comments /articles/:article_id/comments/new /articles/:article_id/comments/:id/edit
Browse to an article and append '/comments' to the end of the URL.
If you want to render comments in-line on Articles#show
or to render a new comment form
To further customize loudmouth, edit the values in the installed initializer file (config/initializers/loudmouth.rb):
# Optionally specify a layout to use for the loudmouth controller config.use_layout = '' # Default comment text for the new comment form config.new_comment_content = "Enter new Comment..."
You can even run the generator to install the views used to render comments:
rails g loudmouth:views
This installs the following files into your application:
app/views/loudmouth/comments/_comment.html.haml app/views/loudmouth/comments/_comment_form.html.haml app/views/loudmouth/comments/index.html.haml
With these views, you can customize how comments appear and are rendered.
Overriding the Loudmouth Controller
Any loudmouth method can be overridden. And hey...there's a generator for that!
rails g loudmouth:override_controller
This will install a loudmouth override controller into your application (app/controllers/comments_controller.rb).
To activate the override controller, make sure to update all of your comments_on calls in your routes.rb file:
comments_on :articles, :by => :users, :controller => 'comments'
Some common functions to override:
- after_create_path - where to direct the user after successfully posting a comment
- validate_destroy - validates whether the current user can delete a comment (e.g. admin or comment author)
- after_destroy_path - where to direct the user after successfully deleting a comment
See the installed override controller source for full details.
Contributing to loudmouth
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
- Fork the project
- Start a feature/bugfix branch
- Commit and push until you are happy with your contribution
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
- Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
This gem was built for Gameface to unify duplicate commenting code.
Copyright (c) 2011 Peter Giacomo Lombardo. See LICENSE.txt for further details.