/routes.rb config rotalara bu 2 eylemler eklemek gerekir, sonra bu sınıfın üzerinde yöntemlerini tanımlayabilir (en ContactInfo
diyelim) Standart Rails form oluşturucu yardımcılarını kullanarak bunları kullanın.
class ContactInfo
attr_accessor :name, :company, :email, :phone, :comments
def initialize(hsh = {})
hsh.each do |key, value|
self.send(:"#{key}=", value)
end
end
end
Ve formda
:
<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 %>
Şimdiye kadar, kimin doğru umurunda?
Ancak, validatable gem'u ekleyin ve bunu yapmak için gerçek bir neden var! Artık gerçek bir model gibi doğrulama mesajlarına sahip olabilirsiniz.
Kontrol dışarı benim tamamlanan ContactInfo sınıf: Eğer ihtiyaç duyduğunuzda mantığın bir sürü o kadar muss zorunda bir ActiveRecord nesnesi olarak Denetleyiciniz kadar aynı şekilde yazıp olamaz çünkü bu gibi
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
formu yeniden görüntülemek için
Ayrıca, Formtastic veya başka bir özel form oluşturucu kullanıyorsanız, bu nesneyi mevcut form stillerinizi kolayca tutarak kullanabilirsiniz.Raylar itibaren
kullanabilirsiniz 4 Bir iletişim formu için "form for" stili kullanmak daha kolay olurdu? – conspirisi
Veritabanı olmayan nesnelerin kolay doğrulanması için geçerli gemiye göz atın. http://github.com/jnunemaker/validatable –
başarısız doğrulama giriş değerlerini geri yüklemek için: http://stackoverflow.com/questions/4129229/rails-restoring-contents-of-non-model-form-that-uses- form-tag/24974457 # 24974457 –