Есть модель SubClass с валидацией полей:
belongs_to :func_class
validates :func_class_id, presence: true
validates :title, presence: { message: "Заголовок не должен быть пустым" }
validates :title, length: { in: 3..500, message: "Длина Заголовка должна быть от 3 до 500 символов" }
Есть контроллер SubClassesController с объявленными переменными:
def new
@sub_class = SubClass.new
@func_class_all = FuncClass.all
end
И сама форма _form.html.erb
<%= form_for(@fire_sub_class) do |f| %>
.....
<div class="field">
Title:<br>
<%= f.text_field :title %>
</div>
<div class="field">
Func class:<br>
<%= f.collection_select(:func_class_id, @func_class_all, :id, :title) %>
</div>
.....
При заполнении формы невалидными значениями (например пустой title), возникает данное исключение NoMethodError
"undefined method `map' for nil:NilClass", вместо указанных при валидации сообщений (свойство message). Причем ссылается на строку с элементом collection_select в _form.html.erb
Сама таблица FuncClass естественно не пустая. Модель FuncClass тоже достаточно простая, с парой текстовых полей.
has_many :sub_class, dependent: :destroy
validates :title, presence: { message: "Заголовок не должен быть пустым" }
validates :title, length: { in: 3..254, message: "Длина Заголовка должна быть от 3 до 254 символов" }
validates :title, uniqueness: { message: "Заголовок должен быть уникальным!" }
Вот пример вызова:
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"iXBbWvvPlsIYqby0lKEJYTsUAaMl1T54tKFumDmRAWE=",
"sub_class"=>{"title"=>"",
"func_class_id"=>"1"},
"commit"=>"OK"}
В модели FuncClass валидация проходит успешно, и в случае ошибочно введенных данных, как и положено, появляется указанное мною в модели сообщение (свойство message).
Используемые версии ПО:
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
Rails 4.0.2
Заранее спасибо, за любую полезную информацию.