2010-12-16 53 views
1

我有一個控制器,並且所有的動作都不是由IE8渲染的,在Firefox和Chromer中都可以正常工作。問題是隻有這個控制器,我有另一個工作正常。RAILS:Internet Explorer 8不渲染動作,下載彈出窗口

的代碼是:

class CustomersController < ApplicationController 
auto_complete_for :customers, :name 

def search 
    unless params[:q].nil? 
    @customers = Customer.find(:all, :conditions => ['name LIKE ?', 
     "%#{params[:q]}%"]) 
    end 

    respond_to do |format| 
    format.xml { render :xml => @customers} 
    format.json { render :json => @customers} 
    end 

end 

def index 
    @customers = Customer.find_index 
end 

def show 
    @customer = Customer.find(params[:id]) 
end 

例如索引作用沒有得到渲染,而是IE8顯示一個下載對話框,但是如果我編輯索引操作是這樣的:

def index 
    @customers = Customer.find_index // a find all but ordered. 
    respond_to do |format| 
    format.html 
    end 
end 

任何想法發生了什麼?

UPDATE
對於大家感興趣的問題是模板文件名。 所有名稱類似「invoice.erb」的文件作爲內容「text/erb」被髮送回瀏覽器,而像「customers.html.erb」這樣的文件被髮回爲「text/html」。 一旦我將所有文件重命名爲「html.erb」,一切正常

+0

只是好奇,爲什麼你會在瀏覽器中點擊這個端點?通常由AJAX調用僅返回xml和json的端點。如果你只是試圖對它們進行測試以確保它們能夠正常工作,那麼你應該爲此編寫測試。 – Samo 2010-12-16 21:44:16

+0

@Samo:你在談論搜索方法嗎?如果是這樣,即時通訊只用於Ajax方法和一些測試通過瀏覽器,如你所說。 – pbruna 2010-12-18 10:07:16

+0

哦,對不起,我誤解了,你說沒有任何操作在IE8中正確呈現,除非你明確地呈現html。我的錯。 – Samo 2010-12-20 15:17:50

回答

1

ie8不知道如何處理xml或json,但不知道如何處理html。如果您確實希望瀏覽器顯示xml,您可以將:content_type => 'text/plain'添加到該塊,以便它知道如何響應。

+0

你是否認爲這是搜索方法的問題的原因,即使我沒有從ie8調用它? – pbruna 2010-12-18 10:08:13

+0

如果你想讓搜索方法在瀏覽器中呈現,你需要給它一個瀏覽器知道該怎麼做的內容類型,或者給它一個html塊,以便它可以渲染一些東西。 IE彈出保存對話框,因爲它不知道如何處理application/xml – dstarh 2010-12-27 15:45:04