Если вы создаете класс для представления вашего объекта (назовем его ContactInfo
), вы можете определить методы для этого класса, а затем использовать их с помощью стандартных помощников построителя форм Rails.
class ContactInfo
attr_accessor :name, :company, :email, :phone, :comments
def initialize(hsh = {})
hsh.each do |key, value|
self.send(:"#{key}=", value)
end
end
end
И в вашей форме:
<h2>Contact Us</h2>
<% form_for(@contact_info, :url => path_for_your_controller_that_handles_this, :html => {:method => :post}) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
...
<% end %>
Пока, кого это волнует?
Однако, добавьте проверяемый драгоценный камень , и у вас есть реальная причина сделать это! Теперь у вас могут быть сообщения проверки, как в реальной модели.
Проверьте мой законченный класс ContactInfo:
class ContactInfo
include Validatable
attr_accessor :name, :company, :email, :phone, :comments
validates_presence_of :name
validates_presence_of :email
validates_presence_of :phone
def initialize(hsh = {})
hsh.each do |key, value|
self.send(:"#{key}=", value)
end
end
end
Мне это нравится, потому что вы можете написать свой контроллер почти так же, как объект ActiveRecord, и вам не нужно много размышлять о нем, когда вам нужно повторно отобразить форму.
Кроме того, если вы используете Formtastic или другой пользовательский конструктор форм, вы можете использовать этот объект с ним, легко сохраняя существующие стили форм.