Edit phrases inline for your Ruby on Rails applications!

Download .zip Download .tar.gz View on GitHub


Phrasing is a gem for live editing phrases (copy) on websites.


Include the gem in your Gemfile

gem "phrasing"

Run the install script:

rake phrasing:install

This will create a migration file and a config file where you can edit the name of the route to see all the phrases.

Migrate your database

rake db:migrate


The rake task will also generate a PhrasingHelper.rb file in your app/helpers folder where you will need to implement your can_edit_phrases? method. Example:

module PhrasingHelper

  def can_edit_phrases?


Include the phrasing html initializer at the top of your body

= render 'phrasing/initializer'

Require the javascript file (most often in your application.js):

//= require phrasing

Require the stylesheet file (most often in your application.css):

//= require phrasing

How to use phrasing?

Start with adding your phrases simply by writting in your view file:

= phrase('my-first-phrase')

Apart from editing phrases (basically, Rails translations) you can also inline edit your models attributes, just use the same phrase method, with the first attribute being the record and the second one the records attribute:

= phrase(@post, :title)

In the above example, @post is the record with a title attribute.


Since Phrasing can be used to update any attribute in any table (using the model_phrase method), special care must be taken into consideration from a security standpoint.

By default, Phrasing doesn't allow updating of any attribute apart from <PhrasingPhrase.value. To be able to work with other attributes, you need to whitelist them.

In the config/initializers/phrasing.rb file you can whitelist your model attributes like this:

Phrasing.white_list = ["Post.title", "Post.body"]

or you can whitelist all of them (not recommended) with:

Phrasing.allow_update_on_all_models_and_attributes = true

Upgrading from version 2.x to 3.x

In versions 3.0.0 and above we have added the Phrasing Versioning System which requires an additional table, so if you are upgrading to a 3.x release, run rake phrasing:install to get the additional migration file, rake db:migrate and thats it.


If you're experiencing problems with Rails apps using Turbolinks, include the jQuery-turbolinks gem in your application and simply require it in the following order:

//= require jquery
//= require jquery.turbolinks
//= require phrasing
//= require turbolinks

Phrasing Appearance

The phrase view helper can take the options hash as the last parameter. Features:

url: custom_url # point Phrasing to other actions in other controllers
inverse: true # change the hovered background and underline colors to better fit darker backgrounds
class: custom_class # add custom CSS classes to your phrases to change the appearance of phrases in your application 
interpolation: { %min: 10 } # add variables to your translations just like w/ I18n


Copyright (c) 2013, Infinum

Phrasing relies heavily (or is built) on two other libraries: the Copycat gem and the ZenPen library. So thank you to the authors and all the contributors!