2014-04-08 12 views
26

benim raylar app bazı verileri depolamak için sunucuya bir ajax isteği var. Bu, herhangi bir sorun olmadan çalışmak için kullanılan, ancak şimdi hata alıyorum: Ben jsonActionController :: UnknownFormat

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

olmak do veri türü bildirmek nerede aşağıdaki gibi

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

olan kontrolör ve benim javascript dosyasını

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

tam hata günlüğü geçerli:

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

sizin olsun komple sunucu günlüğünü paylaşabilir miyim bu hata? –

+0

Kirti! – tvieira

cevap

38

Güncelleme aşağıda create eylemi: Sen respond_to yöntemini kullanıyorsunuz ama anot bir new sayfa oluşturulma formatını belirterek

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 

. Bu nedenle, ActionController::UnknownFormat hatası.

+0

tam olarak anlaşılan o veritabanı üzerinde tasarruf değil (@ reservation.save yanlış dönerse) ama artık hata – tvieira

+0

almak @ reservation.save' bu durumda olarak başarısız olduğunda 'Yup..you hatayı alacağı' else' kısmı formatın eksik olduğu yerde yürütülür. –

+0

ama hatta ' – Dorian

1

Eh ben düşkün bu yazı ben de benzer bir hata var çünkü. yüzden senin kontrolör respond_to gibi üst satırı eklendi: html,: json

sonra (aşağıya bakınız)

denetleyici düzeyinde respond_to' feature has been extracted to the responders` mücevher farklı bir hata var. Bu özelliği kullanmaya devam etmek için Gemfile bunu ekleyin: mücevher 'müdahale', '~> 2.0' Raylar ayrıntılar için kılavuza yükseltme başvurun. Ama bu onunla bir ilgisi yoktu. json formatında varsayılan olarak

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

:

+0

Bunu kontrol edin, http://stackoverflow.com/a/27907829/2244502 – tvieira

+0

Düzenimdeki eksik komut dosyası etiketleriydi. –

15

Ayrıca sevdiği config/routes.rb dosyayı değiştirebilir. Size daha ileri bile gitmek istiyorum ve ad alanları kullanıyorsanız 4.

Veya, çiftleri aşağı kesebilir Rails benim için iyi çalışıyor : /api altında yukarıdaki her şeyi

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

olacak varsayılan olarak json olarak biçimlendirilmelidir.

+0

Mükemmel. Teşekkürler! –

1

Bu sorun benimle oldu ve sadece ApplicationController için

respond_to :html, :json 

Sen Github sorunları Vasiyetle kontrol edebilirsiniz dosyası eklemek tarafından sovled: https://github.com/plataformatec/devise/issues/2667

+0

Bu ApplicationController'ın anladığı bir yöntem değil. – Adamantish

+0

@Adamantish "response_to" kastediyor musunuz? Ekli github sorunları bağlantısını kontrol edebilirsiniz. –

+0

Gerçekten. Belki de bu bağlamda benim için tanınmış bir yöntem olmadığını 5 raylar ile yapmak için bir sebep var. – Adamantish