帮助rails link_to和post方法

nac*_*10f 6 methods post ruby-on-rails

我需要帮助将学生分配到批次......他们处于多对多的关系中.

        <tbody>
            <% Batch.all.each do |b|%>
            <tr>
                <td><%= b.course.name%></td>
                <td><%= b.name %></td>
                <td><%= b.section_name%></td>
                <td><%= link_to "Add", student_batch_students_path(@student, :batch_id=> b.id), :method=> :post%></td>
            </tr>
            <%end%>


        </tbody>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中

def create
    @batch_student = BatchStudent.new(params[:batch_student])
    @batch_student.save    
  end
Run Code Online (Sandbox Code Playgroud)

我的路线

  resources :students do
    resources :batch_students
  end

resources :batches
Run Code Online (Sandbox Code Playgroud)

但是在我的数据库上,它使用student_id和batch_id创建为null

fl0*_*00r 22

您正在更新存在的批处理,但不是正在创建,因此您应该PUT请求update操作

<td><%= link_to "Add", student_batch_students_path(@student, :batch_id => b.id), :method=> :post %></td>


def create
  @student = Student.find(params[:id])
  @batch   = Batch.find(params[:batch_id])
  @batch_student = BatchStudent.new(:params[:batch_student])
  @batch_student.student = @student
  @batch_student.batch = @batch
  @batch_student.save
end
Run Code Online (Sandbox Code Playgroud)