Это тривиально, но нам нужно больше информации.Как эти поля связаны с вашими моделями?Эта модель со многими полями, множеством экземпляров модели или чем-то еще?
В этой ситуации вы хотите использовать построитель форм .Он будет генерировать поля ввода в соответствии с соглашением об именах, которое будет проанализировано в гораздо более полезный формат, когда он попадет в контроллер.Поскольку у меня нет информации о ваших моделях, я буду использовать гипотетический пример:
class Post < ActiveRecord::Base
attr_accessible :title, :body, :author, :published_at
end
Создайте форму с помощью помощника form_for
.Это даст вам объект formbuilder для создания полей ввода.
<% form_for :post do |f| -%>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %>
<%= f.text_area :body %>
</p>
<p>
<%= f.label :author %>
<%= f.text_field :author %>
</p>
<p>
<%= f.label :published_at %>
<%= f.datetime_select :published_at %>
</p>
<% end -%>
Ключевым преимуществом использования помощников является атрибут name
входов, которые он генерирует.Поскольку body
принадлежит форме для post
, ей будет присвоен атрибут name post[body]
.Эти атрибуты будут разбиты на следующий хеш:
:post => {
:title => "This is the title",
:body => "this is the body",
:author => "John Doe",
:published_at => "Mon Nov 15 2010 19:23:40 GMT-0600 (CST)"
}
Это означает, что вам не нужно вручную копировать поля в модель.Вы можете просто передать его непосредственно методу Model#new
:
@post = Post.new(params[:post])
и затем выполнить проверки.Это соглашение становится обязательным, когда вы начинаете вкладывать модели друг в друга.
Более подробное руководство по формированию помощников см. Здесь .