form_with, form_for এবং form_tag এর ব্যবহার

Form Handling এবং Form Helpers - রুবি অন রেইল (Ruby on Rails) - Web Development

321

Ruby on Rails-এ ফর্ম তৈরি করার জন্য তিনটি প্রধান ট্যাগ ব্যবহৃত হয়: form_with, form_for, এবং form_tag। এগুলি হল Rails এর বিশেষ মেথড যা HTML ফর্ম তৈরি করতে এবং ডেটা পাঠাতে ব্যবহৃত হয়। যদিও তিনটি ট্যাগের উদ্দেশ্য একই, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে, যা তাদের ব্যবহারের ক্ষেত্রে প্রভাব ফেলতে পারে।


form_with মেথড

form_with হল Rails 5.1 থেকে প্রবর্তিত একটি ফর্ম তৈরির মেথড। এটি একটি unobtrusive JavaScript (UJS) মেথড, যা AJAX (Asynchronous JavaScript and XML) সমর্থন করে। form_with মেথডটি সার্ভার রিকোয়েস্টের জন্য JavaScript ব্যবহার করে এবং ডিফল্টভাবে ফর্মের সাবমিট ইভেন্টকে AJAX কল হিসাবে পরিচালনা করে। এটি একটি আধুনিক এবং সুপারিশকৃত পদ্ধতি ফর্ম তৈরি করার জন্য।

form_with এর ব্যবহার

<%= form_with(model: @user, local: true) do |form| %>
  <%= form.label :name %>
  <%= form.text_field :name %>

  <%= form.label :email %>
  <%= form.email_field :email %>

  <%= form.submit %>
<% end %>

প্রধান বৈশিষ্ট্য:

  • model:: এটি একটি মডেল অবজেক্ট (যেমন @user) রেন্ডার করে, যার মাধ্যমে ফর্মটি ডেটা সেভ বা আপডেট করবে।
  • local: true: এটি AJAX এর পরিবর্তে সাধারণ HTTP রিকোয়েস্ট পাঠানোর জন্য নির্দেশ দেয়। ডিফল্টভাবে, যদি local: true না দেওয়া হয়, তবে ফর্মটি AJAX রিকোয়েস্ট হিসেবে পাঠানো হয়।
  • নতুন ফিচার: AJAX ফর্ম সাবমিট, ফর্ম ইনপুটগুলি মডেল অ্যাট্রিবিউটের সাথে অ্যাসোসিয়েটেড, এবং form_with সব ধরনের ফর্ম, যেমন সিংগল ফর্ম, মডেল বেসড ফর্মের জন্য উপযুক্ত।

form_for মেথড

form_for একটি পুরানো মেথড, যা Rails 5.1 পর্যন্ত ব্যবহৃত হত। form_for মেথডটি মডেল ভিত্তিক ফর্ম তৈরি করতে ব্যবহৃত হত। তবে, Rails 5.1 থেকে form_for এর পরিবর্তে form_with ব্যবহার করার পরামর্শ দেওয়া হয়, কারণ এটি আরও আধুনিক এবং উন্নত ফিচার সরবরাহ করে।

form_for এর ব্যবহার

<%= form_for(@user) do |form| %>
  <%= form.label :name %>
  <%= form.text_field :name %>

  <%= form.label :email %>
  <%= form.email_field :email %>

  <%= form.submit %>
<% end %>

প্রধান বৈশিষ্ট্য:

  • form_for মডেল অবজেক্টের জন্য ফর্ম তৈরি করে।
  • এটি মডেল রেফারেন্সের ভিত্তিতে ইনপুট ফিল্ড তৈরি করে এবং ডেটা সাবমিট করার জন্য সঠিক URL এবং HTTP মেথড স্বয়ংক্রিয়ভাবে নির্ধারণ করে।

তবে, form_for বর্তমানে পুরানো এবং ব্যবহার না করার জন্য উত্সাহিত করা হয়, কারণ এটি অনেক ক্ষেত্রে form_with এর তুলনায় কম ফ্লেক্সিবল এবং আধুনিক নয়।


form_tag মেথড

form_tag হল একটি ফর্ম তৈরির মেথড যা কোনো মডেল সম্পর্কিত নয়। এটি সাধারণ ফর্ম তৈরি করার জন্য ব্যবহৃত হয়, যেখানে মডেল বা রেকর্ডের সাথে কোনো সম্পর্ক নেই। form_tag সাধারণ HTML ফর্ম তৈরি করতে সহায়তা করে এবং এটি যেকোনো ইউআরএল বা রিকোয়েস্ট পদ্ধতির সাথে কাজ করতে পারে।

form_tag এর ব্যবহার

<%= form_tag('/search', method: :get) do %>
  <%= label_tag :query, "Search" %>
  <%= text_field_tag :query %>
  <%= submit_tag "Search" %>
<% end %>

প্রধান বৈশিষ্ট্য:

  • এটি মডেল বা রেকর্ডের সাথে সম্পর্কিত না হয়ে সাধারণ HTML ফর্ম তৈরি করে।
  • form_tag সাধারণ HTTP রিকোয়েস্ট তৈরি করতে ব্যবহার করা হয়, যেমন GET বা POST পদ্ধতি।
  • submit_tag এবং text_field_tag এর মতো সাধারণ ফর্ম ফিল্ডগুলির জন্য ব্যবহার করা হয়।

form_tag সাধারণত তখন ব্যবহার করা হয় যখন মডেল বা ActiveRecord সম্পর্কিত কিছু ফর্ম অপারেশন না থাকে এবং সাধারণ GET বা POST রিকোয়েস্ট তৈরি করতে হয়।


form_with, form_for এবং form_tag এর মধ্যে পার্থক্য

বৈশিষ্ট্যform_withform_forform_tag
রিলেশনশিপমডেল ভিত্তিক (মডেল পাস করতে হয়)মডেল ভিত্তিক (মডেল পাস করতে হয়)সাধারণ ফর্ম (মডেল ছাড়া)
ডিফল্ট HTTP মেথডAJAX (যদি local: true না দেয়া হয়)POST (বা PUT, PATCH)POST (বা GET)
অ্যাজাক্স সমর্থনহ্যাঁ (ডিফল্টভাবে AJAX)নানা
সুপারিশকৃত ব্যবহারহ্যাঁ (Rails 5.1+ থেকে)পুরানো (Rails 5.1 পূর্বে)সাধারণ ফর্ম (মডেল ছাড়া)
সিমপ্লিসিটিআধুনিক, সহজ এবং আরও ফ্লেক্সিবলপুরানো এবং কম ফ্লেক্সিবলসাধারণ এবং সহজ

সারমর্ম

  • form_with আধুনিক এবং সুপারিশকৃত মেথড, যা AJAX সমর্থন করে এবং মডেল ভিত্তিক ফর্ম তৈরি করতে ব্যবহৃত হয়।
  • form_for পূর্বের সংস্করণে ব্যবহৃত একটি মেথড, যা মডেল ভিত্তিক ফর্ম তৈরি করতে ব্যবহৃত হত, কিন্তু এটি এখন form_with দ্বারা প্রতিস্থাপিত হয়েছে।
  • form_tag সাধারণ ফর্ম তৈরির জন্য ব্যবহৃত হয় যেখানে মডেল বা ActiveRecord অবজেক্ট নেই, এবং এটি সাধারণ GET বা POST রিকোয়েস্টের জন্য ব্যবহার করা হয়।

এখন Rails-এ form_with ব্যবহার করার পরামর্শ দেওয়া হয়, কারণ এটি আধুনিক, আরও ফ্লেক্সিবল এবং AJAX সমর্থন করে।

Content added By
Promotion

Are you sure to start over?

Loading...