У меня проблема с формой и сильными параметрами. Я вижу, что многие прошли передо мной с такими проблемами, но ничто не предлагало им работать.Вложенные формы и сильные параметры - рельсы 4
Моя форма:
<%= form_for(@student) do |f| %>
<%= f.label :school_id %>
<%= f.text_field :school_id, class: 'form-control' %>
...
<%= f.fields_for :enrollments do |enrol_form| %>
<%= enrol_form.label :date , "Enrollment date", class: 'form-control' %>
<%= enrol_form.date_field :date , class: 'form-control' %>
<%= enrol_form.hidden_field :reason, value: "Entered on system" %>
<% end %>
...
<% end %>
Модели:
class Student < ActiveRecord::Base
include PhoneValid
has_many :enrollments, inverse_of: :student
validates :enrollments, :presence => { message: "Must have at least one enrollment event" }
accepts_nested_attributes_for :enrollments
end
class Enrollment < ActiveRecord::Base
belongs_to :student
default_scope -> { order(date: :asc) }
validates :date, presence:true
validates :enroll_wd, inclusion: {in: %w(ENROLL WD), messages: "%{value} must be either WD or ENROLL"}
end
Контроллер:
class StudentsController < ApplicationController
def create
@student = Student.new(student_params)
@student.save
end
def student_params
params.require(:student).permit(:school_id, :cellphone, :attendance_officer_id, :attendance_officer_type, :language_preferred, {enrollment_attributes: [:date, :reason, :id]})
end
end
Выход моей формы по debug(params)
является:
--- !ruby/hash:ActionController::Parameters
utf8: "✓"
authenticity_token: >cuk8Y+d8fHhJ3mU7wtRYtyDJoiYaG8lfzHvdGVBUI+1qmH7xQr20BHsBAFRT4r1EfDb/MMbxMq8rbKw3Cf2Y1A==
student: !ruby/hash:ActionController::Parameters
school_id: '234234'
cellphone: '234234234'
language_preferred: en
enrollments_attributes: !ruby/hash:ActionController::Parameters
'0': !ruby/hash:ActionController::Parameters
date: '2015-07-10'
reason: Entered on system
attendance_officer_id: '8'
attendance_officer_type: User
commit: Save student
controller: students
action: create
Выход student_params
является:
{ "school_id" => "234234", "сотовый телефон" => "234234234", "attendance_officer_id" => "8", "attendance_officer_type" => "Пользователь «„language_preferred“=>»
Я пытался каждый различный формат student_params
, что я могу найти на на форумах и пришли к выводу, что проблема должна быть где-то еще - я создаю форму правильно? Что-то не так в моих моделях?
Благодарим за помощь, которую вы можете мне дать.
Walter
Это ничего не меняет - такой же вывод из 'student_params' ничего о' enrollments' – Walter
@WalterBurrough У Вас есть 'new' метод определенный в контроллере? – Pavan
yes @Pavan, У меня есть
- – Walter