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 (# の未定義メソッド「ホーム」)

こんな風にやってみたら(商品詳細コントローラー)

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

次のようなエラーが発生しています:

NoMethodError (# の未定義メソッド「ホーム」)

私がこのように試した場合(product_detailsコントローラー)

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

エラーが発生しています

#<Array:0xb075138> の未定義のメソッド「ホーム」

私はhome.html.erbのようなビューを持っています

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

_index.html.erb で製品を表示しています

index.js.erb で

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

router.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 に答える