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);
});
});
});