0

在我的项目中,单击复选框,使用 ajax 调用 getProducts 方法。它获取所有产品详细信息,但出现错误。

在我的 application.js 中是这样的:

function getProducts(siteid)
{
    if(document.getElementById("cb_site"+siteid).checked==true)
    {
        var theURL = '/index_s/' + siteid;
            $.ajax({
                url: theURL
            });
    }
}

如果我尝试获取产品详细信息(控制器),例如

@products=ProductDetail.where("site_id=?",params[:siteid])
respond_to do |format|
  format.html redirect_to @products.home
  format.js
end

我收到错误

NoMethodError(未定义的方法 `home' for #)

如果我这样尝试(产品详细信息控制器)

@products=ProductDetail.find_by_site_id(params[:siteid])
respond_to do |format|
  format.html redirect_to @products.home
  format.js
end

我收到这样的错误:

NoMethodError(未定义的方法 `home' for #)

如果我这样尝试(product_details 控制器)

@products=ProductDetail.all
respond_to do |format|
  format.html redirect_to @products.home
  format.js
end

我收到错误

#<Array:0xb075138> 的未定义方法“home”

我有类似 home.html.erb 的观点

<div id="product_details">
    <%= render 'index' %>
</div>

在 _index.html.erb 中显示产品

在 index.js.erb

$('#product_details').html('<%= escape_javascript render ('index') %>');

在路由器.rb

  match "index_s/:siteid" => 'product_details#index'

请帮助我解决这个问题。

4

1 回答 1

0

在控制器中做错了。我更改了我的控制器代码,如下所示,我的问题解决了

在 app/controller/product_details

def index
    @products=ProductDetail.where("site_id=?",params[:siteid])
end

app/views/product_details/home.html.erb

<div id="product_details">
    <%= render 'index' %>
</div>

在 app/views/product_details/_index.html.erb

显示产品详情

在 index.js.erb

$('#product_details').html('<%= escape_javascript render ('index') %>');
于 2012-04-11T12:07:08.903 回答