better unobtrusive javascript respond for Rails and Jquery
This project is maintained by gagoar
Better Unobtrusive JavaScript Respond (for Rails and jquery_ujs, twitter/bootstrap modal.js)
SrBuj comes to cure a common illness in a life of every Rails developer (maybe other kind too):
Every time, we end up with a lot of code, ugly code, messy code or at best with an old and known .js.rb file with the same 4 lines... Well enough it's enough! This is the cure...and comes with a simple treatment too!
This unobtrusive scripting support file is developed for the Ruby on Rails framework, but is not strictly tied to any specific backend. You can drop this into any application.
These features are achieved by adding certain ["data" attributes][data] to your HTML markup. In Rails, they are added by the framework's template helpers.
If you don't use HTML5, adding "data" attributes to your HTML4 or XHTML pages might make them fail [W3C markup validation][validator]. However, this shouldn't create any issues for web browsers or other user agents.
For automated installation in Rails, use the "jquery-rails" gem. Place this in your Gemfile:
gem 'SrBuj'
And run:
$ bundle install
use the generator:
$ bundle exec rails g sr_buj:install
or the manual way:
For Rails 3.1 and higher, add //= require SrBuj
in your app/assets/javascripts/application.js
file like this:
//= require jquery
//= require jquery_ujs
//= require SrBuj
and add *= require SrBuj
in your app/assets/stylesheets/application.css
file:
/*
*= require_self
*= require SrBuj
*= require_tree .
*/
data-target
: Depending on the type of request(GET
/PUT
/POST
/DELETE
) is used to alter the Dom. it represent the element that we want to alter in the view after an succceded request (needed)
data-modal
: If you wish that the response ends up in a modal (default: false).
data-error
: The id element where errors will be rendered if the response received a different state than 200(Ok).
data-delete
: On a successded response, remove the 'data-target' element from document.
data-nochange
: Don't alter the Document.(ignore the verb).
data-callback
: After a succeeded response, call this function.
data-custom
: Just proxy the response to data-callback
function. (default: false).
data-jqueryselector
: Change the data-target
& data-error
for selectors in jquery and find the element!
data-respond-as
: We can alter the respond behavior without careing the method used on the request. values: GET
/POST
/PUT
/PATCH
/DELETE
data-push
: if there is a href or action in the element, replace the url.(default: false)
You can use it with any html element available. (links forms tables divs...Anything).
in your view (example with a link and haml)
= link_to 'add Element', elements_path, remote: true, data: {target: 'partial-id', modal: true}
#partial-id
in your controller
def new
@element= Element.new
render partial: 'new', content_type: 'text/html' #=> the content_type stands for telling the js request that everything ends up
fine.
end
that's it.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)Copyright (c) 2013 gagoar. See LICENSE.txt for further details.