2014-04-08 5 views
26

मेरे रेल ऐप में मेरे पास कुछ डेटा स्टोर करने के लिए सर्वर पर AJAX अनुरोध है। यह किसी भी समस्या के बिना काम करता था, लेकिन अब मैं कोई त्रुटि मिलती है: मैं जहां डेटाप्रकार घोषित JSONएक्शनकंट्रोलर :: अज्ञातफॉर्मैट

class ReservationController < ApplicationController 

    respond_to :html, :json 

    def create 
    ... 
    respond_to do |format| 
     if @reservation.save 
     format.html do 
      redirect_to '/' 
     end 
     format.json { render json: @reservation.to_json } 
     else 
     render 'new' 
     end 
    end # respond_to 
    end # create 
end # ReservationController 

function.js

बनो

ActionController::UnknownFormat (ActionController::UnknownFormat): 
    app/controllers/reservations_controller.rb:45:in `create' 

निम्नलिखित के रूप में किया जाता है नियंत्रक और मेरी जावास्क्रिप्ट फ़ाइल

$.ajax({ 
     url: url_link, 
     dataType: 'json', 
     type: 'POST', 
     data: dataToSend 
     }) 

पूरा त्रुटि लॉग है:

Completed 406 Not Acceptable in 45ms 

ActionController::UnknownFormat (ActionController::UnknownFormat): 
app/controllers/bookings_controller.rb:45:in `create' 

Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.5ms) 
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms) 
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms) 
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (9.6ms) 
+1

आप पूरा सर्वर लॉग जब तुम मिल साझा कर सकते हैं यह गलती? –

+0

बस कीर्ति को जोड़ा! – tvieira

उत्तर

38

अद्यतन के रूप में नीचे create कार्रवाई:

def create 
    ... 
    respond_to do |format| 
    if @reservation.save 
     format.html do 
     redirect_to '/' 
     end 
     format.json { render json: @reservation.to_json } 
    else 
     format.html { render 'new'} ## Specify the format in which you are rendering "new" page 
     format.json { render json: @reservation.errors } ## You might want to specify a json format as well 
    end 
    end 
end 

आप respond_to विधि का उपयोग कर रहे हैं, लेकिन anot प्रारूप जिसमें एक new पेज प्रदान की गई है निर्धारित करता है। इसलिए, त्रुटि ActionController::UnknownFormat

+0

बिल्कुल, जाहिर है कि वह डेटाबेस पर सहेज नहीं रहा है (यदि @ आरक्षण.save झूठा रिटर्न देता है) लेकिन मुझे अब – tvieira

+0

Yup त्रुटि नहीं मिलती है .. आपको केवल तब त्रुटि मिलेगी जब '@ आरक्षण.save' उस मामले में विफल हो जाएगी' अन्यथा भाग निष्पादित किया गया है जहां प्रारूप गुम है। –

+0

लेकिन यह 'format.all' – Dorian

1

अच्छी तरह से मुझे इस पोस्ट का शौक है क्योंकि मुझे एक ही त्रुटि मिली है। , एचटीएमएल: तो मैं अपने नियंत्रक respond_to में की तरह शीर्ष पंक्ति जोड़ा json

तो मुझे कोई दूसरी त्रुटि मिल गया (देखें नीचे)

नियंत्रक स्तरीय respond_to' feature has been extracted to the responders` मणि। इस सुविधा का उपयोग जारी रखने के लिए इसे अपने जेमफाइल में जोड़ें: मणि 'उत्तरदाताओं', '~> 2.0' विवरण के लिए रेल अपग्रेड गाइड से परामर्श लें। लेकिन इसका इसके साथ कुछ लेना देना नहीं था। कौन सा json के लिए प्रारूप लागू हो जाएगी

get 'ajax/:action', to: 'ajax#:action', :defaults => { :format => 'json' } 

:

+0

इसे जांचें, http://stackoverflow.com/a/27907829/2244502 – tvieira

+0

यह मेरे लेआउट में अनुपलब्ध स्क्रिप्ट टैग था। –

15

तुम भी तरह अपने config/routes.rb फ़ाइल को संशोधित कर सकते हैं। यह रेल में मेरे लिए ठीक काम कर रहा है 4.

या यदि आप भी आगे जाना चाहते हैं और आप नामस्थान उपयोग कर रहे हैं, तो आप नीचे डुप्लिकेट कटौती कर सकते हैं: उपरोक्त सब कुछ के साथ

namespace :api, defaults: {format: 'json'} do 
    #your controller routes here ... 
end 

/api के तहत होगा डिफ़ॉल्ट रूप से जेसन के रूप में स्वरूपित किया जाना चाहिए। मेरे साथ

+0

बिल्कुल सही। धन्यवाद! –

1

यह समस्या हुआ है और द्वारा sovled सिर्फ

respond_to :html, :json 
ApplicationController को

फ़ाइल

आप Github पर मुद्दों वसीयत की जाँच कर सकते हैं जोड़ें: https://github.com/plataformatec/devise/issues/2667

+0

यह एक तरीका नहीं है जिसे अनुप्रयोग नियंत्रक समझता है। – Adamantish

+0

@Aadantish क्या आपका मतलब है "respond_to"? आप संलग्न गिटूब मुद्दे लिंक देख सकते हैं। वास्तव में –

+0

। शायद रेल 5 के साथ कुछ कारण है कि यह मेरे लिए उस संदर्भ में एक मान्यता प्राप्त विधि नहीं थी। – Adamantish

संबंधित मुद्दे

 संबंधित मुद्दे