1

1 つではなく ajax 呼び出しを使用して div タグを更新するために 2 つの変数を取得する方法を考えていました。現在の .js ファイル:

    $(document).ready(function() {
      $("select").change(function() {
        var selected_product_id;
        selected_product_id = $(this).val();
        $.ajax({
          url: "/products/" + selected_product_id,
          type: "GET",
          success: function(data) {
          $("#description").empty().append(data);
          }
        });
      });
    });

データを取得するshow.html.erb:

    <%= @product.item %>

私はこのようなものが欲しいです

        $.ajax({
          url: "/products/" + selected_product_id,
          type: "GET",
          success: function(data) {
          $("#description").empty().append(data[1]);
          $("#price").empty().append(data[2]);
          }
        });

        <%= @product.item %>
        <%= @product.price %>

description div は @product.item で更新され、price div は @product.price で更新されます。どうすればこれを達成できますか?

編集

更新された .js ファイル

    $(document).ready(function() {
      $("select").change(function() {
        var selected_product_id;
        selected_product_id = $(this).val();
        $.ajax({
          url: "/products/" + selected_product_id,
          type: "json",
          success: function(data) {
          $("#description").empty().append(product.item);
          $("#price").empty().append(product.price)
          }
        });
      });
    });

show.html.erb:

    <%= @product.item %>
    <%= @product.price %>

コントローラ:

    class ProductsController < ApplicationController
    respond_to do |format|
      format.html # show.html.erb
      format.json  { render :json => @product.to_json }
    end

    def index
    end

    def show
    @product = Product.find(params[:id])
    end

    end

コントローラーが正しくないことは確かです。@product を Respond_to の前に配置しましたが、うまくいきませんでした。そんな初心者でごめんなさい。ご助力いただきありがとうございます。

最終編集:

作業中の JavaScript ファイル:

    $(document).ready(function() {
      $("select").change(function() {
        var selected_product_id;
        selected_product_id = $(this).val();
        $.getJSON("/products/"+selected_product_id,function(data){
      $("#description").empty().append(data.item);
      $("#price").empty().append(data.price);
        });
      });
    });
4

2 に答える 2

1

ああ、これは私が 1 週間前にあなたのために書いたコードを覚えています!

JSON を使用して製品をレンダリングできます。

#controller

def show
  @product = Product.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json  { render :json => @product.to_json }
  end
end

そして、サーバーからの応答を次のように処理します。

    $.ajax({
      url: "/products/" + selected_product_id,
      dataType: 'JSON',
      success: function(data) {
        var product = JSON.parse(data);
        $("#description").empty().append(product.item);
        $("#price").empty().append(product.price);
      }
    });

編集#1:私はこの方法を見つけましたjQuery.getJSON::http://api.jquery.com/jQuery.getJSON/

于 2013-06-10T15:27:46.007 に答える
1

JSONを使用して、返すことができます

{"item": "<%=j @product.item %>", "price": <%= @produce.price %>}

次にtype: 'json'、ajax呼び出しで

于 2013-06-10T15:28:29.457 に答える