0

ここに私のモデルがあります:

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 %>
4

1 に答える 1

0

モデルで必要accepts_nested_attributes_for :studentsになります。ThesisGroup

<%= field_set_tag 'Alumnos' do %>
  <%= f.fields_for :students do |student| %>
    <%= student.label :name, 'Student' %>
    <%= student.collection_select :student_id, Student.all, :id, :name %>
  <% end %>
<% end %>

編集:collection_selectのパラメーターについても突然よくわかりません:(

于 2013-01-30T13:25:59.393 に答える