Shared handlebars templates for rails 3 and 4.
Add this line to your application's Gemfile:
gem 'sht_rails'
And then execute:
$ bundle
Or install it yourself as:
$ gem install sht_rails
$ rails g sht_rails:install
Generator add into "application.js" requirements for mustache and "templates" folder in "app". Next you can create handlebars templates in this folder or subfolders.
For example:
File: "app/templates/tests/_test.handlebars"
Hello {{msg}}!!!
In view you can render this template by this way:
<%= render "tests/test", :handlebars => {msg: "Test"} %>
The same template you can render in JavaScript:
var content = SHT['tests/test']({msg: "Test"});
ShtRails.configure do |config|
config.template_extension = 'handlebars' # change extension of mustache templates
config.action_view_key = 'handlebars' # change name of key for rendering in ActionView mustache template
config.template_namespace = 'SHT' # change templates namespace in javascript
config.template_base_path = Rails.root.join("app", "templates") # templates dir
config.helper_path = config.template_base_path + 'helpers.js' # helpers
end
In Rails, if you have config.assets.initialize_on_precompile set to false, but have placed the above config in an initializer, it will not run. To get around this, you can do the following in application.rb:
if "assets" == ENV["RAILS_GROUPS"] || ["development", "test"].include?(ENV["RAILS_ENV"])
ShtRails.template_namespace = 'JST'
end
Site: http://st-rails-example.herokuapp.com
Source code: https://github.com/le0pard/st_rails_example
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request