質問の言い方がよくわからなかったので、質問の言い回しが間違っていたらごめんなさい。
私を助けるために必要な最小限の情報を提供しようとします。編集または追加する内容をお知らせください。ありがとう。
したがって、リレーショナル MYSQL データベースは既に 4 つのテーブルのデータでセットアップされています。このプログラムは、小規模な顧客データベース ルックアップを想定しています。フォームを含む HTML ページがあります。顧客番号を入力するテキスト ボックスと、取得するデータを決定するための 4 つのラジオ ボタンです。テーブル内のデータにアクセスして制御するために、Ruby on Rails (私は一度も使用したことがありません) を使用しています。
4 つのラジオ ボタン:
- 顧客データ
- 営業担当者
- 注文
- 部品
これらのテーブルの内容へのリンクは次のとおりです: http://www.cs.uky.edu/~paulp/CS316/tables.txt
最初の 2 つのラジオは、customerNumが入力されるため、簡単に実装できました。顧客データについては、変数を設定して顧客テーブルから値を取得します。SalesRepオプションも簡単でした。customerNum入力を取得し、変数をcustomersのデータに設定し、別の変数をsalesrepsのデータに設定しました。customerNumが入力である顧客から変数を取得して、別の変数を salesrep id にしました。次に、その営業担当者 ID を使用して、その顧客の営業担当者の関連データを表示しました。
3 番目と 4 番目のラジオ オプション (注文と部品) には困惑しました。orders テーブルを見ると、一部のcustomerNumには複数の注文があります。
私の質問は基本的に、「特定の顧客のすべての注文 (およびそれぞれに関連するデータ) を表示するにはどうすればよいですか?」というものです。
各customerNumには 1 つまたは複数の注文がある可能性があるため、最初の 2 つのラジオで行ったことをそのまま実行することはできません。Ruby on Rails は初めてで、これを実装する方法がわかりません。
すぐにいくつかのコードを投稿します。この投稿を編集するための提案、またはこれを実装するための提案は大歓迎です。ありがとう!
コード:
index.html.erb
<%
# index.html.erb
# First (input) screen for example
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<link rel="stylesheet" type="text/css" href="style.css">
<title>The Data Access Program</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Spartan Hardware Data Access</h1>
<form action="cs316ruby/result" method="post" >
<h3>Data requested:
<input type="text" name="data" /> </h3>
<ol>
<li><input type="radio" name="field" value="cu" id="field_cu" checked="checked" />
Customer data</li>
<li><input type="radio" name="field" value="sr" id="field_sr" />Sales rep</li>
<li><input type="radio" name="field" value="or" id="field_o" />Orders</li>
<li><input type="radio" name="field" value="p" id="field_p" />Parts</li>
</ol>
<input type="hidden" name=<%= request_forgery_protection_token.to_s %>
value=<%= form_authenticity_token %> />
<input type="submit" value="submit" />
</form>
</body>
</html>
salesrepdisplay.html.erb
<%
# salesrepisplay.html.erb.rb
# View that displays customer's sales rep data for cs316ruby program
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<link rel="stylesheet" type="text/css" href="style.css">
<title>The Data Access Program</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Spartan Hardware Stores Data Access</h1>
<% # get the customer data from the customer table
@custdata = Customer.find(@data)
# copy the Sales rep field into a variable to retrieve sales rep data
# if sales rep id = 00, the entered customer has no sales rep
@sr = @custdata.sales_rep
@srdata = Salesrep.find(@sr)
@ln = @srdata.last_name
@fn = @srdata.first_name
@rt = @srdata.rate
@cm = @srdata.commission;
@cm = sprintf("%7.2f",@cm)
%>
<h1>Sales Rep data for customer: <%=@data %></h1>
<table border=1>
<tr>
<td>ID</td>
<td>Last name</td>
<td>First name</td>
<td>Commission</td>
<td>Rate</td>
</tr>
<tr>
<td><%=@sr%></td>
<td><%=@ln%></td>
<td><%=@fn%></td>
<td><%=@cm%></td>
<td><%=@rt%></td>
</tr>
</table>
</body>
</html>
custdisplay.html.erb
<%
# custdisplay.html.erb.rb
# View that displays customer data for cs316ruby program
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<title>The Data Access Program</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Spartan Hardware Stores Data Access</h1>
<% # get the customer data from the customer table
@custdata = Customer.find(@data)
# copy each field into a variable for display
@id = @custdata.id
@ln = @custdata.last_name
@fn = @custdata.first_name
@bl = @custdata.balance;
@bl = sprintf("%7.2f",@bl) # format as currency
@cl = @custdata.credit_limit
@cl = sprintf("%7.2f",@cl) # format as currency
@sr = @custdata.sales_rep
%>
<h1>customer data for customer: <%=@data %></h1>
<table border=1>
<tr>
<td>ID</td>
<td>Last name</td>
<td>First name</td>
<td>Balance</td>
<td>Credit limit</td>
<td>Sales rep</td>
</tr>
<tr>
<td><%=@id%></td>
<td><%=@ln%></td>
<td><%=@fn%></td>
<td><%=@bl%></td>
<td><%=@cl%></td>
<td><%=@sr%></td>
</tr>
</table>
</body>
</html>
orderdisplay.html.erb
これは基本的に、営業担当者と顧客の注文ページをコピーして貼り付けたものです。
<%
# orderdisplay.html.erb
# View that displays customer's order data for cs316ruby program
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<title>The Data Access Program</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Spartan Hardware Stores Data Access</h1>
<% # get the customer data from the customer table
@custdata = Customer.find(@data)
%>
<h1>Order data for customer: <%=@data %></h1>
<table border=1>
<tr>
<td>Order Number</td>
<td>Order Date</td>
<td>Cost of Order</td>
</tr>
<tr>
<td><%=@sr%></td>
<td><%=@ln%></td>
<td><%=@fn%></td>
</tr>
</table>
</body>
</html>