diff options
author | Javan Makhmali <javan@javan.us> | 2017-03-30 14:41:17 -0400 |
---|---|---|
committer | Javan Makhmali <javan@javan.us> | 2017-03-30 14:41:17 -0400 |
commit | 11341fdb3a1664ba58edf729ed46e04cd0e20ed6 (patch) | |
tree | 561eaca65797dee2ffd5122c02344901abd976a8 /actionview/app/assets/javascripts/rails-ujs/features/method.coffee | |
parent | e0ac3498c669fad7aab18436fc84f9e52b72bc8a (diff) | |
download | rails-11341fdb3a1664ba58edf729ed46e04cd0e20ed6.tar.gz rails-11341fdb3a1664ba58edf729ed46e04cd0e20ed6.tar.bz2 rails-11341fdb3a1664ba58edf729ed46e04cd0e20ed6.zip |
Reorganize rails-ujs files
Diffstat (limited to 'actionview/app/assets/javascripts/rails-ujs/features/method.coffee')
-rw-r--r-- | actionview/app/assets/javascripts/rails-ujs/features/method.coffee | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/actionview/app/assets/javascripts/rails-ujs/features/method.coffee b/actionview/app/assets/javascripts/rails-ujs/features/method.coffee new file mode 100644 index 0000000000..d04d9414dd --- /dev/null +++ b/actionview/app/assets/javascripts/rails-ujs/features/method.coffee @@ -0,0 +1,34 @@ +#= require_tree ../utils + +{ stopEverything } = Rails + +# Handles "data-method" on links such as: +# <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a> +Rails.handleMethod = (e) -> + link = this + method = link.getAttribute('data-method') + return unless method + + href = Rails.href(link) + csrfToken = Rails.csrfToken() + csrfParam = Rails.csrfParam() + form = document.createElement('form') + formContent = "<input name='_method' value='#{method}' type='hidden' />" + + if csrfParam? and csrfToken? and not Rails.isCrossDomain(href) + formContent += "<input name='#{csrfParam}' value='#{csrfToken}' type='hidden' />" + + # Must trigger submit by click on a button, else "submit" event handler won't work! + # https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit + formContent += '<input type="submit" />' + + form.method = 'post' + form.action = href + form.target = link.target + form.innerHTML = formContent + form.style.display = 'none' + + document.body.appendChild(form) + form.querySelector('[type="submit"]').click() + + stopEverything(e) |