現在、Ruby v 2.0.0p195 と rails v 3.2.13 を使用しています。
私はレールとルビーに非常に慣れていないので、興味深いプロジェクトに参加することで、これらすべてを行う方法を学ぶためにそこに飛び込みました。
生徒の名前をリストし、特定の日付の記録を同時に更新する機会を提供する、学校の出席記録のエントリ フォームを作成したいと考えています。つまり、特定の学生を欠席としてマークする機会を与えながら、すべての学生の選択された日付を一度に更新するフォーム上の 1 つの大きなボタンです。
私はすでに既存の生徒コントローラー メソッドを使用して、生徒用の個々のレコードを作成していますが、これは正常に機能します。生徒ごとに個別の出席簿を作成することもできますが、それも同様に機能しますが、グループ全体を 1 つのリストに入れようとすると、それを機能させることができず、どうすればよいかわかりません。
ネストされたフォーム アプローチを使用して学生コントローラーで新しいメソッドを作成するか、またはこれらのレコードを作成および編集するために使用されていない出席コントローラー メソッドを使用しますか。出席コントローラを使用する場合、学生を一覧表示し、出席コントローラ内からこれらのレコードをリンクするにはどうすればよいですか?
私は2つのテーブルを持っています:
学生と出席
学生.rb
has_many :attendances, :dependent => :destroy
accepts_nested_attributes_for :attendances, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
出席.rb
attr_accessible :present, :attdate, :absent, :partial, :notified, :notes, :student_id
belongs_to :student, :class_name => 'Student'
routes.rb は次のようになります。
root to: 'home_page#home'
get 'attendance/:id', to: 'students#attentry'
get 'attendance', to: 'students#attentry'
resources :attendances
resources :students do
member do
get 'attentry'
end
end
resources :students do
resources :attendances
end
resources :students
get 'students/attentry'
個々のことを機能させるためにビットを追加する必要があったため、ルートの一部が混乱していると思います。
私が現在学生の出席に使用しているコントローラーメソッドは次のとおりです。
def attentry
@student = Student.find(params[:id])
@attendance = @student.attendances.build
respond_to do |format|
format.html { render action: "attentry" }
format.json { render json: @student }
end
end
ビューは次のとおりです。
<%= form_for (@student) do |f| %>
<%= f.text_field :name -%>
<div class="span9">
<table class = "table table-striped">
<tr>
<td>Date</td>
<td>Present</td>
<td>Absent</td>
<td> Part Day</td>
<td>Notified</td>
<td>Notes</td>
</tr>
<%= f.fields_for :attendances do |fc| %>
<tr>
<td><%= fc.text_field :attdate %></td>
<td><%= fc.check_box :present %></td>
<td><%= fc.check_box :absent %></td>
<td><%= fc.text_field :partial %></td>
<td><%= fc.check_box :notified %></td>
<td><%= fc.text_area :notes, :rows => 3 %></td>
</tr>
<% end %>
</div>
</table>
<br />
<div class="actions">
<%= f.submit %>
</div>
とにかく、私が得たのは、1 人の学生のすべての出席の詳細を表示するテーブルです。ボタンとチェック ボックスを使用してすべての学生を一度に更新できるように、1 つのテーブルにすべての学生を取得しようとしています。
これはよりJavascriptのことですか、それともRuby/Railsの世界に留まりながらこれを行うことができますか?
私は多くのRailscastとスタックオーバーフローの投稿を経験しており、徐々にそれらをまとめてパッチを当ててきましたが、この部分は何週間も困惑していました. Ruby と Rails のバージョンが私に頭痛の種を与えているのではないかと考え始めています. .....アイデア、提案、見るべき場所を事前に感謝します。