2015-04-22 2 views
0

Я создаю страницу инструкторов, в которой есть несколько идентификаторов курса, которые должны быть переданы в список параметров модели.Опубликовать список значений параметров params

Ниже приведен код для белого списка Params

def instructor_params 
    params.require(:instructor).permit(:LastName, :FirstMidName, :HireDate, {:courses_ids => []}) 
end 

Моя страница создания как ниже

<%= form_for @instructor, :html => { :class => "form-horizontal instructor" } do |f| %> 
    <% if @instructor.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@instructor.errors.count, "error") %> prohibited this instructor from being saved:</h2> 

      <ul> 
      <% @instructor.errors.full_messages.each do |message| %> 
       <li><%= message %></li> 
      <% end %> 
      </ul> 
     </div> 
    <% end %> 

    <div class="form-group"> 
     <%= f.label :LastName, :class => 'control-label col-md-2' %> 
     <div class="col-md-10"> 
     <%= f.text_field :LastName, :class => 'form-control' %> 
     <%= error_span(@instructor[:LastName]) %> 
     </div> 

    </div> 
    <div class="form-group"> 
     <%= f.label :FirstMidName, :class => 'control-label col-md-2' %> 
     <div class="col-md-10"> 
     <%= f.text_field :FirstMidName, :class => 'form-control' %> 
     <%= error_span(@instructor[:FirstMidName]) %> 
     </div> 

    </div> 
    <div class="form-group"> 
     <%= f.label :HireDate, :class => 'control-label col-md-2' %> 
     <div class="col-md-10"> 
     <%= f.text_field :HireDate, :class => 'form-control' %> 
     <%= error_span(@instructor[:HireDate]) %> 
     </div> 
    </div> 

    <div class="form-group"> 
     <%= f.label text="Courses", :class => 'control-label col-md-2' %> 
     <div class="col-md-10"> 
     <table cellpadding="5"> 
      <tr> 
      <td> 
       <input type="checkbox" name="course_ids" value="Course1">Course1 
       <input type="checkbox" name="course_ids" value="Course2">Course2 
       <input type="checkbox" name="course_ids" value="Course3">Course3 
      </td> 
      </tr> 
     </table> 
     </div> 
    </div> 


    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
     <%= f.submit nil, :class => 'btn btn-primary' %> 
     <%= link_to t('.cancel', :default => t("helpers.links.cancel")), 
        instructors_path, :class => 'btn btn-default' %> 
     </div> 
    </div> 
<% end %> 

Но если выберите несколько чек-боксы PARAMS не проходит как массивы. «Это заняло только последнее и показ не разрешен. Пожалуйста, направляйте меня. У меня нет атрибута с именем course_ids в модели Instructor.

ответ

0

Чтобы получить массив значений, вам необходимо изменить название ваших флажков быть course_ids[]

В вашем разрешенном Params, {:courses_ids => []} можно записать просто как course_ids: [] (также обратите внимание на опечатку вы имели с множественным " курсы).

+0

спасибо, что это сработало, но как я создал записи в ссылочной таблице вместе с вставкой основной таблицы – Akhil

+0

Это целый отдельный вопрос, выходящий за рамки этого. Я предлагаю прочитать на ['accepts_nested_attributes_for'] (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for) как в документах Rails, так и на StackOverflow. – deefour

+0

ОК, я попробую это и напишу еще один вопрос, если возникнет какая-либо проблема. – Akhil

Смежные вопросы