2010-09-20 4 views
44

Aşağıdaki kontrolör kodu vardır:Rails 3 HTTP 406 döndürüyor Kabul Edilemez mi?

def create 
    @admin = Admin.new(params[:admin]) 
    respond_to do |format| 
     if @admin.save 
     redirect_to(@admin, :notice => 'Admin was successfully created.') 
     else 
     render :action => "new" 
     end 
    end 
    end 

    def update 
    @admin = Admin.find(params[:id]) 
    respond_to do |format| 
     if @admin.update_attributes(params[:admin]) 
     redirect_to(admin_admins_path, :notice => 'Admin was successfully updated.') 
     else 
     render :action => "edit" 
     end 
    end 
    end 

ve aşağıdaki yolları: Artık

  admin_admins GET /admin/admins(.:format)   {:action=>"index", :controller=>"admin/admins"} 
      admin_admins POST /admin/admins(.:format)   {:action=>"create", :controller=>"admin/admins"} 
     new_admin_admin GET /admin/admins/new(.:format)  {:action=>"new", :controller=>"admin/admins"} 
     edit_admin_admin GET /admin/admins/:id/edit(.:format) {:action=>"edit", :controller=>"admin/admins"} 
      admin_admin GET /admin/admins/:id(.:format)  {:action=>"show", :controller=>"admin/admins"} 
      admin_admin PUT /admin/admins/:id(.:format)  {:action=>"update", :controller=>"admin/admins"} 
      admin_admin DELETE /admin/admins/:id(.:format)  {:action=>"destroy", :controller=>"admin/admins"} 

kenara biraz kaçık adlandırma gelen - yönlendirmeleri hep Kabul edilemez bir 406 sonuçlanabilir. Ne yanlış olabilir?

cevap

80

respond_to do |format| bloklarını kaldır. Hangi biçime yanıt verdiğinizi belirtmediğinizden, ör. format.html { #your code here }. respond_to belgelerini doğru şekilde nasıl kontrol edin.

+0

belki bu bağlantıyı AD_URL assert_redirected_to bilgi var ben (sadece mantıklı) testleri çalışması için de HTML yanıt vermek gerekli Şunlar için: http://techoctave.com/c7/posts/36-rails-3-0-rescue-from-routing-error-solution – nisevi

9

Benzer bir hata yaptım, denetleyicim yalnızca JSON'a yanıt veriyordu. Yapmaya çalıştığım hata aldı

class AdsController < ApplicationController 
    respond_to :json, :html 

: (reklamı)

+2

Teşekkürler, bu benim için bir 406 hatası neden oldu. – patrickandroid

+0

Bu, yalnızca 'response_with @ obj' ile bağlantılı olarak kullanırsanız sorunu çözecektir. Aksi takdirde, denetleyicide 'response_to' belirtilmesi noop'dur. – maletor

+0

@maletor, doğru değil. 'Response_with' kullanılıp kullanılmadığına bakılmaksızın 406 hata üretilir. –