Ruby-on-Rails アプリ (継承した最初のアプリ) で同じ問題が発生し続けます。ビューがユーザーを反復処理し、それらに関するデータをユーザーごとに 1 行の html テーブルに配置する管理ダッシュボードがあります。現在、埋め込みルビーで反復を実行し、ユーザーのデータを探し、時にはそれを処理し、反復しながら行ごとにテーブルに配置するビューを持っています。
私はレールにかなり慣れていませんが、プログラムにビューからのデータベース呼び出しの多くを実行させることは、MVC モデルを壊しているように見え、あまり安全ではないようです。現在、支払い処理会社 (Stripe) から呼び出すデータを使用しようとしていますが、View から呼び出すのは非常に安全ではないようです。具体的には、ストライプを付けた郵便番号に基づいて、顧客の場所を列に追加する予定です。これには、アカウントに関連付けられているクレジット カードについて Stripe に電話する必要があります。
これが問題です。3 つの方法が考えられますが、そのうちの 1 つだけが機能します (ただし、それは間違っていると思いますので、別の方法を教えていただければ幸いです)。
- コントローラーでユーザーを反復処理します。必要なデータを取得し、それを使用して何かを行い、ビューにデータを取得できるようにします。ビュー内のユーザーを繰り返し処理し、そのユーザーにのみ関連付けられているデータをコントローラーからフェッチし、ユーザーごとに 1 つのテーブル行を作成します。繰り返しますが、それを行う方法がわかりません。
- コントローラー内のデータを反復処理し、何らかの形でデータをビューに送り、データを受信していることを認識し、各反復を行に配置する必要があります (および反復からの各項目をセルに配置する必要があります。これは可能ですか?
- 私が今していること: Controller では、すべてのユーザーのローカル変数を作成する以外は何もせず
@users=User.all
、ビューですべてを行います。
現在、ビュー内のコード (これらの例の 1 つです。これはいくつかのビューで数回発生しており、顧客ページとしてのユーザー、ユーザーとコミュニティの関与ページ、およびすべての製品の別のページですべてのユーザーにアクセスしています。 ) は次のようになります。
<table id="table_of_users2">
<thead>
<th width="200px">First Name</th>
<th width="200px">Last Name</th>
<th width="200px">Email</th>
<th width="200px">Number Representing Community Activity</th>
<th width="200px">Favorites</th>
<th width="200px">Comments</th>
</thead>
<tbody>
<% @users.each do |user|%>
<% @our_community_activity_number=0 %>
<% @times_faved=0 %>
<% @comments=0 %>
<% user.engagements.each do |engagement| %>
<% if engagement.our_community_activity==true %>
<% @our_community_activity_number+=1%>
<% end %>
<% if engagement.favorite==true%>
<% @times_faved+=1%>
<% end %>
<% if engagement.comment!="" || engagement.comment!=nil %>
<% @comments +=1 %>
<% end %>
<% end %>
<tr>
<td width="200px"><%= user.first_name%> </td>
<td width="200px"><%= user.last_name %></td>
<td width="200px"><%= mail_to("#{user.email}")%></td>
<td width="200px"><%= @our_community_activity_number %></td>
<td width="200px"><%= @times_faved==0?0:@meals_faved %>
<td width="200px"><%= @comments %></td>
</tr>
<% end%>
</tbody>
</table>
安全性を高め、支払い処理会社からの位置情報をページに安全に追加できるように、これを書き直すにはどうすればよいですか? このように安全に行うことができないと考えるのは正しいですか?
ありがとう。私は Rails を始めたばかりで、同じ問題に何度も遭遇しています。