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_with | form_for | form_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 সমর্থন করে।
Read more