2017-09-18 39 views
0

我有一个网络应用程序,我正在构建这将允许用户添加课程和他们正在进行的任务。我希望他们能够一次添加多个作业。要做到这一点,我有一个表单,我将添加JavaScript来添加更多的输入字段。带导轨的多表格行

<%= form_tag(@assignment) do |f| %> 
     <div class="hidden-form"> 
     <input type="hidden" name="course_id" value="<%= @course.id %>"> 
     </div> 
     <div id="assignments"> 
     <div class="assignment-row"> 
      <div class="fields"> 
       <div class="col-sm-6 col-xs-12"> 
        <div class="form-group"> 
         <%= label_tag :name %> 
         <%= text_field_tag "assignments[][name]", "", class: "form-control" %> 
        </div> 
       </div> 
       <div class="col-sm-3 col-xs-6"> 
        <div class="form-group"> 
        <%= label_tag :weight %> 
        <%= text_field_tag "assignments[][weight]","", class: "form-control" %> 
        </div> 
       </div> 
       <div class="col-sm-3 col-xs-6"> 
        <div class="form-group"> 
         <%= label_tag :grade %> 
         <%= text_field_tag "assignments[][grade]","", class: "form-control" %> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="col-md-12" style='margin: 15px 0;'> 
     <button class="btn btn-primary btn-full" id="add-assignment-form"> 
     Add Assignment <span class="fa fa-plus"></span> 
     </button 
    </div> 
    </div> 
    <div class="footer"> 
    <div class="col-sm-6"> 
    <a href="#" class="btn btn-full btn-default">Skip</a> 
     </div> 
    <br class="visible-xs"> 
    <div class="col-sm-6 text-right"> 
    <%= submit_tag("Save and Continue", class: "btn btn-full btn-success") %> 
    </div> 
    <% end %> 

然后我有我的任务控制器尝试循环通过每个窗体并保存每个条目。

def create 
    @assignments = params[:assignments] 
    @course = Course.find(params[:course_id]) 

    @assignments.each do |assignment| 
     @a = @course.assignments.new(assignment) 
     if @a.save 
     respond_to do |format| 
      format.html { redirect_to root_path, alert: "Course was added!" } 
     end 
     end 
    end 

    end 

我有这个麻烦,因为我不断收到error:ForbiddenAttributesError

我真的不知道如何解决这个问题。我曾尝试将它发送到我的Assignment控制器中的消毒剂,但没有任何工作...

注意:我还没有添加动态表单javascript功能。只是想获得第一项工作...

+0

您必须定义和使用strong_params。 –

+0

我将如何使用具有多个条目的strong_params? –

+0

许可params。请参阅http://api.rubyonrails.org/v5.1/classes/ActionController/StrongParameters.html – krishnar

回答

0

您必须允许参数...类似下面应该工作:

def create 
    @course = Course.find(params[:course_id]) 

    assignments_params.each do |assignment| 
    @a = @course.assignments.new(assignment) 
    if @a.save 
     respond_to do |format| 
     format.html { redirect_to root_path, alert: "Course was added!" } 
     end 
    end 
    end 
end 


private 

def assignments_params 
    params.permit(assignments: [:name, :weight, :grade]) 
end