में मार्गों के लिए इन 2 कार्यों जोड़ने की जरूरत है आप, तो उस वर्ग पर तरीकों को परिभाषित कर सकते (यह ContactInfo
कहते हैं) मानक रेल फॉर्म निर्माता निर्माता का उपयोग करके उनका उपयोग करें।
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 %>
अब तक, कौन सही परवाह करता है?
हालांकि, validatable gem में जोड़ें, और आपको यह करने के लिए वास्तविक कारण मिला है! अब आपके पास असली मॉडल की तरह सत्यापन संदेश हो सकते हैं।
चेक बाहर मेरी पूरा 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 वस्तु के रूप में अपने नियंत्रक ठीक वैसे ही लिख सकते हैं और नहीं कर सकते फॉर्म को फिर से प्रदर्शित करने के लिए।
प्लस, यदि आप फॉर्मेटास्टिक या किसी अन्य कस्टम फॉर्म बिल्डर का उपयोग कर रहे हैं, तो आप इस ऑब्जेक्ट का उपयोग अपने मौजूदा फॉर्म शैलियों को आसानी से रखते हुए कर सकते हैं।
उपयोग कर सकते हैं मैं भी जिसका अर्थ है कि गैर मॉडल रूपों को मान्य करने के लिए एक दर्द, कि किया जा रहा है कर रहे हैं वेब के आसपास कुछ टिप्पणियों पर गौर किया एक संपर्क फ़ॉर्म के लिए "फॉर्म के लिए" शैली का उपयोग करना आसान होगा? – conspirisi
गैर-डेटाबेस ऑब्जेक्ट्स के आसान सत्यापन के लिए मान्य करने योग्य मणि देखें। http://github.com/jnunemaker/validatable –
विफल सत्यापन पर इनपुट मानों को पुनर्स्थापित करने के लिए: http://stackoverflow.com/questions/4129229/rails-restoring-contents-of-non-model-form-that-uses- फॉर्म-टैग/24 9 74457 # 24 9 74457 –