0

我想做的經典類別 - >子類鏈接下拉列表(選擇類別中的東西,填充子類別)。

代碼我已經在所有的瀏覽器中工作,除了IE(自然)。

這裏是我使用的JS代碼:

$("body select#category").data_binding({ 
    child: "select#company_subcategory_id", 
    url: "subcategories", 
}); 

    [ . . . ] 

    data_binding: function(options) 
    { 
      $(this).change(function() 
      { 
        $.getJSON("/"+ options.url +"/", 
          { id: $(this).val(), ajax: 'true'}, 
           function(j) 
           { 
            for (var i = 0; i < j.length; i++) 
            { 
             options += '<option value="' + j[i].optionValue + '">'; 
             options += j[i].optionDisplay; 
             options += '</option>'; 
            } 

            $(child).html(options); 
           }); 
      }); 
    } 

小類控制器

class SubcategoriesController < ApplicationController 
    layout 'application' 

    def index 
     @subcategories = Subcategory.find_all_by_category_id(params[:id]) 
     respond_to do |format| 
      format.js {render :json => @subcategories.collect {|sc| {:optionValue => sc.id, 
                  :optionDisplay => sc.name} }.to_json } 
      end 
    end 

    def show 
     @subcategory = Subcategory.category_permalink_like(params[:category]). 
              permalink_like(params[:subcategory]).first 
     @with_banner = @subcategory.companies.active.with_banner 
     @without_banner = @subcategory.companies.active.without_banner 
    end 
end 

我拖尾development.log文件,當我使用任何瀏覽器除了IE以外的日誌顯示

Processing SubcategoriesController#show (for 192.168.1.70 at 2010-08-26 01:49:06) [GET] 
Parameters: {"id"=>"4", "_"=>"1282805337516", "show_type"=>"available_banners"} 

但是當我使用IE我得到

Processing SubcategoriesController#create (for 192.168.1.70 at 2010-08-26 01:50:09) [POST] 
Parameters: {"ajax"=>"true", "authenticity_token"=>"Eg2XAvSSHg/v12cKjTPt+HkKWhxdGW3s5n6lm9jHu2A=", "id"=>"6"} 

沒有定義的創建操作,所以它崩潰。

我不知道這是爲什麼不同的解釋:/

有什麼建議?

謝謝!

+0

SubcategoriesController#create是什麼樣子的? – Tom 2010-08-26 06:58:06

+0

沒有子類別控制器#創建 它不應該被調用:/ – 2010-08-26 16:02:46

回答

0

好吧,這是一個荒謬的問題的解決辦法,但我在我的智慧結束,這似乎工作。

我修改子類別控制器像這樣:

class SubcategoriesController < ApplicationController 
    layout 'application' 

    def index 
    @subcategories = Subcategory.find_all_by_category_id(params[:id]) 
    respond_to do |format| 
     format.js {render :json => @subcategories.collect {|sc| {:optionValue => sc.id, 
                 :optionDisplay => sc.name} }.to_json } 
     end 
    end 

    def show 
     @subcategory = Subcategory.category_permalink_like(params[:category]). 
             permalink_like(params[:subcategory]).first 
     @with_banner = @subcategory.companies.active.with_banner 
     @without_banner = @subcategory.companies.active.without_banner 
    end 

    #this is the added method 
    def create 
     index 
    end 
end 

出於某種原因,IE一直試圖調用在子類控制器在所有其他瀏覽器玩好了create方法,並調用index方法

我真的不知道爲什麼會發生這種情況,所以這個黑客將不得不這樣做:(

我簡化了我上面提出的代碼,以便更容易閱讀。

0

我記得調試最近很類似的問題。如果我沒有記錯,它與傳遞給jquery的MIME類型& dataType有關。看看使用get或getScript代替。

相關問題