मैं Rails 4.2 एप्लिकेशन को रेल 5.1 पर माइग्रेट करने का प्रयास कर रहा हूं। रेल में 4.2 हम भारी JQuery का उपयोग किया। फिलहाल मैं फॉर्म बनाने के लिए संघर्ष कर रहा हूं, remote: true
विशेषता के साथ ठीक से काम करता है। एक उदाहरण के रूप में इस एक सरल रूप है, जहां उपयोगकर्ता देशरेल 5, रिमोट: सच्चा फॉर्म खाली डेटा
= simple_form_for(:user_data,
url: user_path(@user),
remote: true,
method: :patch,
data: {'user-update' => true},
dataType: 'json',
html: wrapper: :horizontal_form) do |f|
.panel.panel-default
.panel-body
.col-md-8
= f.input :country, label: 'Country',
= f.button :submit
नियंत्रक
def update
@user.update!(user_params)
render json: @user
end
मैं respond_to
साथ js
प्रतिक्रिया स्वरूप जोड़ने की कोशिश की है का चयन है, लेकिन उस मामले में यह कन्वर्ट करने के लिए कोशिश करता है निष्पादन योग्य जावास्क्रिप्ट के लिए @user
। ईवेंट हैंडलर के रूप में इस
$('form[data-user-update]')
.on('ajax:success', function(e, data, status, xhr) {
// The data variable is empty
})
.on('ajax:error', function(e, error, status, xhr) {
$('.simple_form').renderFormErrors('user_data', error.responseJSON);
});
संपादित
रिस्पांस हैडर
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Type: application/json; charset=utf-8
ETag: W/"f53889092c58dc37054386c9504ad1ff"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 712b59ff-8011-4b10-a905-83e559b47452
X-Runtime: 0.101165
Transfer-Encoding: chunked
अनुरोध हेडर
Accept:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,et;q=0.6
Connection:keep-alive
Content-Length:71
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Host:localhost:3000
Origin:http://localhost:3000
Referer:http://localhost:3000/users/470d573b-b0f1-4822-b036-7d37be6672d6
X-Requested-With:XMLHttpRequest
रिस्पांस
तरह लग रहा है{
firstName:'John',
lastName: 'Smith',
country: 'USA'
}
आप डेवलपर उपकरण सर्वर की प्रतिक्रिया के माध्यम से निरीक्षण कर सकते हैं पर पूर्ववत है? (क्रोम में, टैब "नेटवर्क", फॉर्म को रिमोट सबमिट करें, अनुरोध ढूंढें और HTTP req/res का विश्लेषण करें) – MrYoshiji
@MrYoshiji कृपया –
अपडेट करें यदि आप 'AJAX: सफलता' कॉलबैक में 'डीबगर' डालते हैं, क्या आप 'e',' data', आदि के लिए कोई मान देख सकते हैं? – MrYoshiji