Phrasing!
Phrasing is a gem for live editing phrases (copy) on websites.
Installation
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
Setup
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?
current_user.is_admin?
end
end
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.
Security
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.
Turbolinks
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
Authors
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!