Form_for और form_tag के बीच अंतर क्या है? क्या form_remote_for और form_remote_tag के लिए कुछ अलग है?
जवाबों:
आप किसी विशिष्ट मॉडल के लिए form_for का उपयोग करेंगे,
<% form_for @person do |f| %> # you can use f here
First name: <%= f.text_field :first_name %>
Last name : <%= f.text_field :last_name %>
<% end %>
Form_tag मूल रूप बनाएँ,
<%= form_tag '/person' do -%>
<%= text_field_tag "person", "first_name" %>
<% end -%>
form_forपसंद करते हैं, इसके पहले arg के रूप में, एक activerecord ऑब्जेक्ट; यह आसानी से एक बनाने या संपादित करने की अनुमति देता है ("नए" दृश्य में इसका उपयोग करने के लिए आपको नियंत्रक में एक खाली उदाहरण बनाना चाहिए, जैसे:
def new
@foo = Foo.new
end
यह ब्लॉक के लिए एक फॉर्म चर भी देता है, ताकि आपको फॉर्म के भीतर मॉडल नाम को दोहराना न पड़े। यह मॉडल से संबंधित प्रपत्र लिखने का पसंदीदा तरीका है।
form_tagबस एक फार्म टैग बनाता है (और निश्चित रूप से चुपचाप एक एंटिफॉर्गी छिपा क्षेत्र तैयार करें, जैसे form_for); यह गैर-मॉडल रूपों के लिए सबसे अच्छा उपयोग किया जाता है (मैं वास्तव में केवल इसे सरल खोज रूपों या पसंद के लिए उपयोग करता हूं)।
इसी तरह, form_remote_forऔर form_remote_tagमॉडल से संबंधित रूपों के लिए अनुकूल हैं और क्रमशः संबंधित मॉडल से संबंधित नहीं हैं, लेकिन, मानक http विधि (GET, POST ...) में समाप्त होने के बजाय, वे एक अजाक्स विधि कहते हैं।
यह सब और कहीं अधिक आपके लिए फॉर्महेल्पर में आनंद लेने के लिए उपलब्ध हैं और प्रोटोटाइपहेलपर संदर्भ पृष्ठ।
EDIT 2012-07-13
Prototyperailsबहुत पहले हटा दिया गया है, और दूरस्थ रूप पूरी तरह से बदल गए हैं। कृपया पहले लिंक का संदर्भ लें, :remoteदोनों के विकल्प के साथ form_forऔर form_tag।
form_forActiveRecord ऑब्जेक्ट "पसंद" करता है?
ये समान होने चाहिए:
<% form_for @person do |f| %>
<%= f.text_field :name %>
<% end %>
तथा:
<%= form_tag '/person' do %>
<%= text_field_tag "person[name]" %>
<% end %>
यदि आप नियंत्रक के लिए एक ही पैरा जमा करना चाहते हैं, तो आपको इसे स्पष्ट रूप से परिभाषित करना होगा।