Phrasing is a gem for live editing phrases (copy) on websites.
Include the gem in your Gemfile
Bundle the Gemfile
Run the install script which will create a migration file and a config file.
rails generate phrasing
Migrate your database
The rake task will also generate phrasing_helper.rb in your app/helpers folder. Here you will need to implement the can_edit_phrases? method. Use this to hook-up your existing user authentication system to work with Phrasing.
module PhrasingHelper def can_edit_phrases? current_user.is_admin? end end
Include the phrasing html initializer right below the
<body> tag in your application layout file.
<%= render 'phrasing/initializer' %>
//= require phrasing
//= require jquery //= require jquery_ujs //= require phrasing
Include the required stylesheet file:
*= require phrasing
How to use phrasing?
You can start adding new phrases by simply adding them in your view file:
<%= phrase('my-first-phrase') %>
Aside from editing phrases (basically, Rails translations) you can also edit model attributes inline. Use the same
phrase method, with the first attribute being the record in question, and the second one the attribute you wish to make editable:
<%= 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:
config.white_list = ["Post.title", "Post.body"]
or you can whitelist all of them (not recommended) with:
config.allow_update_on_all_models_and_attributes = true
If you're using Turbolinks make sure the phrasing gem is required after it:
//= require jquery //= require jquery_ujs //= require turbolinks //= require phrasing
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 scope: 'homepage.footer' # add scopes just like you would w/ I18.n. If the first argument is 'test', than the key would be 'homepage.footer.test'
Phrasing is maintained and sponsored by Infinum.
Phrasing leverages parts of Copycat and ZenPen.
Phrasing is Copyright © 2013 Infinum. It is free software, and may be redistributed under the terms specified in the LICENSE file.