जब आप form_for
. का उपयोग कर रहे हों :
आपके मामले में, Video
नमूना। रेल सम्मेलन को समझने के लिए:
<%= form_for @video do |f| %>
...
<%= f.text_field :description %>
...
जिसके परिणामस्वरूप एक HTML टैग होता है जिसका नाम विशेषता वीडियो[विवरण] . है . इसका अर्थ यह है कि जब फ़ॉर्म सबमिट किया जाता है, तो उपयोगकर्ता द्वारा दर्ज किया गया मान नियंत्रक में params[:video][:description] के रूप में उपलब्ध होगा ।
params
वेरिएबल ActiveSupport::HashWithIndifferentAccess
का एक उदाहरण है , एक Hash
. की तरह एक छोटे से अंतर के साथ, दस्तावेज़ीकरण के अनुसार:
आपके params
कुछ इस तरह है:
{"utf8"=>"✓",
"_method"=>"post",
"authenticity_token"=>"xxx",
"video"=>
{"description"=>"Video desc"}
}
जहां "video"
या :video
हैश की चाबियों में से एक है। तो, params[:video]
params.fetch("video")
. के बराबर है {"description"=>"Video desc"}
. कौन सा मान है . जैसा कि आप देख सकते हैं मान एक और हैश है। अंत में विवरण का मूल्य प्राप्त करने के लिए आपको params[:video][:description]
. करना होगा (रेल मार्ग) या params.fetch("video").fetch("description")
, जो मान "Video desc"
. है ।
fetch
Hash
. की रूबी विधि है :"दी गई कुंजी के लिए हैश से एक मान लौटाता है।"
इसे ध्यान में रखते हुए:
Video.new(params[:video]) = Video.new(:description => "Video desc") = Video.new(:description => params[:video][:description])
सम्मेलनों का उपयोग करना आसान है, लेकिन निश्चित रूप से आपके पास params[:description]
हो सकता है (सिर्फ मामले में):
<%= form_for @video do |f| %>
...
<%= text_field_tag :description %>
...
ध्यान दें कि मैं text_field_tag
का उपयोग कर रहा हूं f.text_field
. के बजाय . इस मामले में html टैग नाम description
होगा params
. में हैश आपको प्राप्त होगा { "description" => 'Video desc" }
...
Rails API के दस्तावेज़ पर एक नज़र डालें विभिन्न सहायकों आदि को समझने के लिए और अपने सर्वर के लॉग की भी समीक्षा करें।