1

質問の言い方がよくわからなかったので、質問の言い回しが間違っていたらごめんなさい。

私を助けるために必要な最小限の情報を提供しようとします。編集または追加する内容をお知らせください。ありがとう。

したがって、リレーショナル 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>

4

2 に答える 2

1

より狭い質問をする必要があります。(また ~'s は所有格です。普通の ~s は複数形です。)

tables.txt を確認すると、orderlines.id は orderline.order_id を意味しているように見えます。これは、orderlines の注文の外部キーです。

これらを ActiveRecord オブジェクトとして表現した場合、class Orderを指す has_manyにどのように記述しOrderLineますか?

于 2013-11-10T18:10:17.093 に答える
0

私はそれを考え出した。

私は自分が持っていたコードでそれを1つの方法で理解しようとしていました. 以下は、すべてを配列に入れるコード ブロックと、反復ごとに値にアクセスするためのループです。

<% #creating the array
    @orderdata = Order.find(:all, :conditions => ["customer_ID = ?",@data])


#the loop
 @custdata.orders.each do |order| 

   @id = order.id %>

     <td><%=@id%></td>

<%end%>

思ったよりずっと簡単です!

于 2013-11-12T23:42:58.530 に答える