ここに私のモデルがあります:
class ThesisGroup < ActiveRecord::Base
belongs_to :course
has_and_belongs_to_many :students
attr_accessible :code, :title, :course_id
end
class Student < ActiveRecord::Base
has_and_belongs_to_many :thesis_groups
attr_accessible :email, :lastnames, :names
end
class CreateThesisGroupStudentJoinTable < ActiveRecord::Migration
def change
create_table :thesis_groups_students, :id => false do |t|
t.integer :thesis_group_id
t.integer :student_id
end
end
end
そして私のコントローラーでは、ThesisGroups の編集のために:
def update
@thesis_group = ThesisGroup.find(params[:id])
respond_to do |format|
if @thesis_group.update_attributes(params[:thesis_group])
format.html { redirect_to @thesis_group, notice: 'Thesis group was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @thesis_group.errors, status: :unprocessable_entity }
end
end
end
私のビューでは、N 個のドロップダウン リストを表示できるようにする必要があります。この現在の ThesisGroup との関係にある学生ごとに 1 つ。
次のことを試しましたが、エラーが発生しましたundefined method map for #<ThesisGroup:0x007f76b8c9d4d0>
:
<div class="control-group">
<%= f.label :student %>
<div class="controls">
<%= f.collection_select 'student_ids', @thesis_group, :id, :names %>
</div>
</div>
学生用に N 個の要素を選択する必要があり、このフォームを編集するときに、以前に選択した要素が選択済みとして表示されます。Railsにはこれを処理する方法がありますか?
Student_ids コレクションなどを反復処理できますか:
<%= student_ids.each do |s| %>
generate html select element with 's'
<% end %>