2016-08-21 5 views
0

私は、教師が生徒のバッチ作成を行うことを可能にするプロジェクトに取り組んでいます。私はすでに特定の学生のためにそれをするときに正常に動作する標準グレードの作成を持っています。他のユーザーに属するすべてのユーザーを繰り返し処理する方法

教師(User)には、それに属する学生(User)が多数あります。私が達成しようとしているのは、「バッチのグレードを作成」をクリックすると、グレードを入力して「作成」をクリックできる最初の生徒のcreate_grade_pathに移動します。次の生徒のためにcreate_grade_pathに移動し、すべての生徒に成績が作成されるまで続きます。

私の質問は、私がこのようなことに遭遇していないので、それらを反復する最良の方法は何でしょうか。現在ログインしている先生に属するすべての生徒の配列である変数@all_studentsがあります。それが空になるまで、私はこれのコピーを作成し、そこからレコードを削除しますか?

はどうもありがとう、

答えて

1

まず、あなたのcreate_grade_pathルートに、batch_updateのようなものを追加のパラメータを追加することを検討してください。このパラメータは、これがバッチ・アクションかシングル・アクションかを示します。

これがバッチリクエストの場合は、保存に成功した後、別の生徒のグレードビューにリダイレクトする必要があります。あなたはさまざまな方法でそれを行うことができます。グレードを持たない他の学生をデータベースから取り出したり、セッションを使ってグレードが必要な学生のIDを保存したりすることができます。セッションでは、プロセス全体を開始する別のアクションを作成する必要があります。

def start_batch_create 
    @all_students = Student.all # or other query 
    sessions[:students_to_grade] = @all_students.map(&:id) 
end 

は、今ではあなたがこのセッション変数は、一人の学生を削除し、いくつかのIDをセッション変数に存在しない限り、他の学生のためのグレードを作成するために、リダイレクトアクセスできるアクションを作成します。

関連する問題