vendor/assets/javascripts/editable/rails/editable_form.js.coffee in x-editable-rails-1.5.0 vs vendor/assets/javascripts/editable/rails/editable_form.js.coffee in x-editable-rails-1.5.1
- old
+ new
@@ -1,40 +1,55 @@
jQuery ($) ->
EditableForm = $.fn.editableform.Constructor
EditableForm.prototype.saveWithUrlHook = (value) ->
- originalUrl = @options.url
- model = @options.model
- nestedName = @options.nested
- nestedId = @options.nid
- nestedLocale = @options.locale
+ originalUrl = @options.url
+ model = @options.model
+ nestedName = @options.nested
+ nestedId = @options.nid
+ nestedLocale = @options.locale
+
@options.url = (params) =>
if typeof originalUrl == 'function'
originalUrl.call(@options.scope, params)
else if originalUrl? && @options.send != 'never'
myName = params.name
+
if typeof params.value == 'string'
myValue = params.value.replace(/(\r\n|\n|\r)/gm,"<br/>")
else
myValue = params.value
+
+ # if there are no values in a list, add a blank value so Rails knows all values were removed
+ if Object.prototype.toString.call(params.value) == '[object Array]' && params.value.length == 0
+ params.value.push("")
+
obj = {}
+
if nestedName
- nested = {}
- nested[myName] = myValue
- nested['id'] = nestedId
+ nested = {}
+ nested[myName] = myValue
+ nested['id'] = nestedId
+
if nestedLocale
nested['locale'] = nestedLocale
+
obj[nestedName + '_attributes'] = nested
else
obj[myName] = myValue
+
params[model] = obj
+
delete params.name
delete params.value
delete params.pk
+
$.ajax($.extend({
- url : originalUrl
- data : params
- type : 'PUT'
+ url: originalUrl
+ data: params
+ type: 'PUT'
dataType: 'json'
}, @options.ajaxOptions))
+
@saveWithoutUrlHook(value)
+
EditableForm.prototype.saveWithoutUrlHook = EditableForm.prototype.save
EditableForm.prototype.save = EditableForm.prototype.saveWithUrlHook
\ No newline at end of file