Classnames::Rails::View
This is a view helper that dynamically generates class attributes in Rails view, like JedWatson/classnames.
Usage
The Helper method is included automatically, so you can use it immediately.
<div class="<%= class_names('foo') %>">Hello World</div>
<%# <div class="foo">Hello World</div> %>The class_names method takes any number of arguments which can be a string or hash.
The argument 'foo' is short for { foo: true }. If the value associated with a given key is falsy, that key won't be included in the output.
class_names('foo', 'bar'); // => 'foo bar'
class_names('foo', { bar: true }); // => 'foo bar'
class_names({ 'foo-bar': true }); // => 'foo-bar'
class_names({ 'foo-bar': false }); // => ''
class_names({ foo: true }, { bar: true }); // => 'foo bar'
class_names({ foo: true, bar: true }); // => 'foo bar'
// lots of arguments of various types
class_names('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
// other falsy values are just ignored
class_names(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'Arrays will be recursively flattened as per the rules above:
var arr = ['b', { c: true, d: false }];
class_names('a', arr); // => 'a b c'Change the method name
If you want to change the method name, you can change it with config when starting the application.
# config/application.rb
class Application < Rails::Application
...
config.classnames_rails_view.method_name = :classes
end<div class="<%= classes('foo') %>">Hello World</div>Installation
Add this line to your application's Gemfile:
gem 'classnames-rails-view'And then execute:
$ bundleContributing
- The test uses Rspec. Please execute the test with
rspeccommand. - Please code check with rubocop.
License
The gem is available as open source under the terms of the MIT License.