我正在尝试做经典类别 - >子类别链式下拉列表(选择类别中的内容,填充子类别)。
我在IE(除了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 :(得分: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
方法
我真的不知道为什么会这样,所以这个黑客现在必须要做的事情:(
我简化了上面提到的代码,因此更容易阅读。
答案 1 :(得分:0)
我记得最近调试了一个非常类似的问题。如果我没记错的话,它与mime类型&amp; dataType传递给jquery。看一下使用get或getScript。