Ruby on Rails (RoR) একটি MVC (Model-View-Controller) ভিত্তিক ফ্রেমওয়ার্ক, যেখানে Routing এবং Controller গুরুত্বপূর্ণ ভূমিকা পালন করে। এই দুটি উপাদান একসাথে কাজ করে রিকোয়েস্টের সঠিক প্রক্রিয়া এবং ইউজারের সামনে উপস্থাপনা নিশ্চিত করতে। নিচে Rails Routing এবং Controller সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Rails Routing
Routing হচ্ছে সেই প্রক্রিয়া, যা ইউজারের ওয়েব রিকোয়েস্টকে সঠিক কন্ট্রোলার এবং অ্যাকশনের সাথে যুক্ত করে। এটি config/routes.rb ফাইলে সংজ্ঞায়িত করা হয়। Routing এর মাধ্যমে URL এবং কন্ট্রোলার অ্যাকশন একে অপরের সাথে সংযুক্ত হয়, যাতে ওয়েব অ্যাপ্লিকেশন সঠিকভাবে কাজ করতে পারে।
Routing এর প্রধান কাজ:
- ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার এবং অ্যাকশনের কাছে পাঠানো।
- URL প্যাটার্নের সাথে কন্ট্রোলার মেথড সংযুক্ত করা।
- RESTful রাউটিং দ্বারা সঠিক HTTP মেথড (GET, POST, PUT, DELETE) নির্ধারণ করা।
Routing এ কিছু সাধারণ ব্যবহার:
সাধারণ রাউটিং (GET রিকোয়েস্ট):
# config/routes.rb get 'home/index'এই রাউটটি
home#indexঅ্যাকশনে একটি GET রিকোয়েস্টকে নির্দেশ করে।RESTful রাউটিং: Rails-এ RESTful রাউটিং হল সেই রাউটিং প্যাটার্ন যেখানে URL গুলি সাধারণভাবে ডাটাবেসের রিসোর্সগুলির সাথে সম্পর্কিত থাকে। উদাহরণ:
# config/routes.rb resources :articlesএটি স্বয়ংক্রিয়ভাবে RESTful রাউট তৈরি করবে, যেমন:
- GET /articles →
articles#index - GET /articles/:id →
articles#show - POST /articles →
articles#create - PUT/PATCH /articles/:id →
articles#update - DELETE /articles/:id →
articles#destroy
- GET /articles →
রাউট সহ প্যারামিটার: আপনি URL প্যারামিটার ব্যবহার করে ডাইনামিক রাউট তৈরি করতে পারেন:
get 'articles/:id', to: 'articles#show'এখানে
:idএকটি প্যারামিটার, যা কন্ট্রোলারেparams[:id]হিসেবে ব্যবহৃত হবে।
Controller
Controller Rails অ্যাপ্লিকেশনের সবচেয়ে গুরুত্বপূর্ণ অংশগুলির মধ্যে একটি। কন্ট্রোলার ইউজারের রিকোয়েস্ট প্রক্রিয়া করে, মডেল থেকে ডেটা নিয়ে আসে, এবং সেই ডেটা ভিউতে প্রেরণ করে। এটি মডেল এবং ভিউয়ের মধ্যে একটি মধ্যস্থতাকারী হিসেবে কাজ করে।
Controller এর ভূমিকা:
- রিকোয়েস্ট প্রক্রিয়াকরণ: ইউজারের HTTP রিকোয়েস্ট প্রক্রিয়া করে।
- মডেল থেকে ডেটা সংগ্রহ: মডেল থেকে ডেটা আনা এবং তা প্রক্রিয়াকরণ।
- ভিউতে ডেটা প্রেরণ: প্রক্রিয়াকৃত ডেটা ভিউ টেমপ্লেটে পাঠানো।
Controller তৈরির উদাহরণ
নতুন কন্ট্রোলার তৈরি করা: Rails-এ নতুন কন্ট্রোলার তৈরি করতে:
rails generate controller Articlesএটি
app/controllers/articles_controller.rbফাইল তৈরি করবে।কন্ট্রোলারে অ্যাকশন সংজ্ঞায়িত করা: কন্ট্রোলারের মধ্যে বিভিন্ন অ্যাকশন সংজ্ঞায়িত করা হয়। উদাহরণ:
class ArticlesController < ApplicationController def index @articles = Article.all end def show @article = Article.find(params[:id]) end endindexঅ্যাকশনটি সব আর্টিকেলগুলি দেখাবে।showঅ্যাকশনটি নির্দিষ্ট আর্টিকেলের ডেটা দেখাবে, যেখানেparams[:id]ব্যবহার করে আমরা ডেটা আনব।
ভিউতে ডেটা প্রেরণ: কন্ট্রোলারের মাধ্যমে ডেটা ভিউতে পাঠানো হয়। উদাহরণস্বরূপ,
@articlesবা@articleভিউতে ব্যবহার করা যাবে:<!-- app/views/articles/index.html.erb --> <h1>Articles List</h1> <ul> <% @articles.each do |article| %> <li><%= article.title %></li> <% end %> </ul>এখানে
@articlesভিউতে প্রদর্শন করা হচ্ছে, যা কন্ট্রোলারেরindexঅ্যাকশনে ইনস্ট্যান্স ভেরিয়েবল হিসেবে তৈরি হয়েছিল।রেসপন্স রিটার্ন করা: কন্ট্রোলার অ্যাকশনগুলো সাধারণত একটি ভিউ রেন্ডার করে, কিন্তু আপনি কিছু রেসপন্সও সরাসরি রিটার্ন করতে পারেন:
def show @article = Article.find(params[:id]) render json: @article endএই অ্যাকশনটি JSON ফর্ম্যাটে একটি আর্টিকেল রিটার্ন করবে।
Rails Routing এবং Controller এর সংযোগ
Rails Routing এবং Controller একে অপরের সাথে ঘনিষ্ঠভাবে কাজ করে। রাউট নির্ধারণ করে কোন কন্ট্রোলার এবং কোন অ্যাকশন ইউজারের রিকোয়েস্ট প্রক্রিয়া করবে। কন্ট্রোলার সেই রিকোয়েস্টের জন্য প্রয়োজনীয় ডেটা প্রক্রিয়া করে এবং ভিউতে পাঠায়।
উদাহরণ:
config/routes.rb:
get 'articles/:id', to: 'articles#show'
app/controllers/articles_controller.rb:
class ArticlesController < ApplicationController
def show
@article = Article.find(params[:id])
end
end
app/views/articles/show.html.erb:
<h1><%= @article.title %></h1>
<p><%= @article.content %></p>
এখানে, যখন ইউজার /articles/:id রিকোয়েস্ট পাঠাবে, রাউটটি ArticlesController#show অ্যাকশনে রিডাইরেক্ট করবে। তারপর কন্ট্রোলার ঐ আর্টিকেলটির ডেটা @article ইনস্ট্যান্স ভেরিয়েবলে রাখবে, যা ভিউতে প্রদর্শিত হবে।
সারমর্ম
- Routing ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার এবং অ্যাকশনে পাঠায়।
- Controller ইউজারের রিকোয়েস্ট প্রক্রিয়া করে, মডেল থেকে ডেটা সংগ্রহ করে এবং সেই ডেটা ভিউতে পাঠায়।
- Rails-এ RESTful routing ব্যবহার করলে কন্ট্রোলার অ্যাকশনগুলো খুব সহজে নির্ধারণ করা যায়।
Rails Routing এবং Controller সমন্বয়ে একটি শক্তিশালী ও কার্যকরী ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্ট পরিবেশ তৈরি করে।
Ruby on Rails (RoR) অ্যাপ্লিকেশনে routes ব্যবহার করা হয় ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার অ্যাকশনের কাছে রিডাইরেক্ট করার জন্য। RoR এ static এবং dynamic রাউটিং দুটি গুরুত্বপূর্ণ ধারণা। Static routes সাধারণত নির্দিষ্ট URL পাথের জন্য ব্যবহৃত হয়, যেখানে Dynamic routes ইউজারের আর্গুমেন্ট বা ভেরিয়েবলকে URL এর অংশ হিসেবে অন্তর্ভুক্ত করে।
এখানে আমরা Static routes এবং Dynamic routes তৈরি করার পদ্ধতি আলোচনা করব।
Static Routes তৈরি করা
Static routes সাধারণত নির্দিষ্ট URL পাথের জন্য ব্যবহৃত হয়, যেখানে কোন ভেরিয়েবল বা আর্গুমেন্ট থাকে না। এটি সাধারণত সহজ অ্যাকশনের জন্য ব্যবহার হয়।
Static Route এর উদাহরণ
ধরা যাক, আপনার ওয়েব অ্যাপ্লিকেশনে একটি home পেজ তৈরি করতে চান, যেখানে একটি নির্দিষ্ট URL পাথ /home থাকবে।
ধাপ ১: config/routes.rb ফাইলে Static Route যুক্ত করা
Rails.application.routes.draw do
get 'home', to: 'pages#home'
end
- এখানে,
/homeURL পাথটিpagesকন্ট্রোলারেরhomeঅ্যাকশনের দিকে নির্দেশ করবে।
ধাপ ২: কন্ট্রোলার তৈরি করা
rails generate controller Pages home
- এই কমান্ডটি
PagesControllerতৈরি করবে এবংhomeঅ্যাকশন এবং এর সাথে একটি ভিউ তৈরি করবে।
ধাপ ৩: app/controllers/pages_controller.rb ফাইলে অ্যাকশন লেখা
class PagesController < ApplicationController
def home
# এখানে আপনি ডেটা বা অন্যান্য লজিক যুক্ত করতে পারেন
end
end
ধাপ ৪: app/views/pages/home.html.erb ফাইলে HTML কোড লেখা
<h1>Welcome to the Home Page</h1>
<p>This is a static route example in Ruby on Rails.</p>
রাউটটি কাজ করছে কিনা যাচাই
এখন আপনি ব্রাউজারে http://localhost:3000/home URL টিতে গেলে "Welcome to the Home Page" পেজটি দেখতে পাবেন।
Dynamic Routes তৈরি করা
Dynamic routes এমন রাউট যা ইউজারের ইনপুট বা আর্গুমেন্টের ভিত্তিতে URL পাথ তৈরি করে। এতে URL-তে ভেরিয়েবল প্যারামিটার থাকে, যেমন /users/:id যেখানে :id একটি ডায়নামিক প্যারামিটার।
Dynamic Route এর উদাহরণ
ধরা যাক, আপনি একটি ওয়েব অ্যাপ্লিকেশনে users পেজ তৈরি করতে চান, যেখানে ইউজারের id অনুযায়ী তাদের তথ্য দেখানো হবে।
ধাপ ১: config/routes.rb ফাইলে Dynamic Route যুক্ত করা
Rails.application.routes.draw do
get 'users/:id', to: 'users#show'
end
- এখানে,
/users/:idURL পাথটিusersকন্ট্রোলারেরshowঅ্যাকশনের কাছে রিডাইরেক্ট হবে, যেখানে:idভেরিয়েবল প্যারামিটার হিসেবে ব্যবহৃত হবে।
ধাপ ২: কন্ট্রোলার তৈরি করা
rails generate controller Users show
- এই কমান্ডটি
UsersControllerতৈরি করবে এবংshowঅ্যাকশন তৈরি করবে।
ধাপ ৩: app/controllers/users_controller.rb ফাইলে অ্যাকশন লেখা
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
end
- এখানে,
params[:id]ব্যবহার করে ইউজারেরidনেওয়া হচ্ছে এবং সেই অনুযায়ী ডেটাবেস থেকে ইউজারের তথ্য খোঁজা হচ্ছে।
ধাপ ৪: app/views/users/show.html.erb ফাইলে HTML কোড লেখা
<h1>User Details</h1>
<p>ID: <%= @user.id %></p>
<p>Name: <%= @user.name %></p>
<p>Email: <%= @user.email %></p>
ধাপ ৫: ডেটাবেসে ইউজার ডেটা যোগ করা
এটি করার জন্য আপনার ডেটাবেসে কিছু ইউজার তথ্য থাকতে হবে। আপনি rails console দিয়ে ইউজার তৈরি করতে পারেন:
rails console
User.create(name: "John Doe", email: "john@example.com")
রাউটটি কাজ করছে কিনা যাচাই
এখন আপনি ব্রাউজারে http://localhost:3000/users/1 URL টি পরিদর্শন করলে ইউজার ID 1 এর বিস্তারিত দেখতে পাবেন।
Static এবং Dynamic Routes এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Static Route | Dynamic Route |
|---|---|---|
| URL পাথ | নির্দিষ্ট URL | ইউজারের প্যারামিটার ব্যবহার করা হয় |
| অর্থ | কোন ভেরিয়েবল বা প্যারামিটার থাকে না | ইউজারের ইনপুট বা আর্গুমেন্ট ব্যবহার করা হয় |
| ব্যবহার | সাধারণ পেজ বা তথ্য প্রদর্শন | ইউজারের ডেটা বা ইনপুটের ভিত্তিতে পেজ রেন্ডার |
সারমর্ম
Ruby on Rails এ static এবং dynamic routes তৈরি করার মাধ্যমে আপনি ইউজারের রিকোয়েস্টকে কন্ট্রোলারের নির্দিষ্ট অ্যাকশনের কাছে রিডাইরেক্ট করতে পারেন। Static routes নির্দিষ্ট পাথের জন্য ব্যবহৃত হয়, এবং Dynamic routes ইউজারের প্যারামিটার দিয়ে রাউট তৈরি করে। এই রাউটিং সিস্টেমটি Rails অ্যাপ্লিকেশনকে আরও ইন্টারেকটিভ এবং কার্যকর করে তোলে।
Controller হলো Ruby on Rails অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর রিকোয়েস্ট প্রক্রিয়াকরণ করে এবং সংশ্লিষ্ট ডেটা নিয়ে ভিউতে পাঠায়। প্রতিটি Action Method একটি নির্দিষ্ট কাজ করে এবং রিকোয়েস্টের প্রতিক্রিয়া হিসেবে ইউজারের কাছে রেসপন্স পাঠায়।
Controller তৈরি করা
Rails এ একটি Controller তৈরি করতে rails generate controller কমান্ড ব্যবহার করা হয়। এই কমান্ডটি স্বয়ংক্রিয়ভাবে একটি নতুন কন্ট্রোলার ফাইল তৈরি করে, যেখানে আপনার বিভিন্ন অ্যাকশন সংজ্ঞায়িত করা যাবে।
Controller তৈরি করার উদাহরণ:
ধরা যাক, আপনি একটি "Posts" কন্ট্রোলার তৈরি করতে চান:
rails generate controller Posts
এই কমান্ডটি একটি posts_controller.rb ফাইল তৈরি করবে এবং এই ফাইলের মধ্যে কিছু ডিফল্ট অ্যাকশন থাকবে (যেমন: index, show, new, create, edit, update, destroy)।
Controller এর মূল অংশ
1. Controller Class
প্রত্যেকটি কন্ট্রোলার একটি Ruby ক্লাসের মাধ্যমে সংজ্ঞায়িত হয়, যা ApplicationController থেকে ইনহেরিট করে।
class PostsController < ApplicationController
# অ্যাকশন মেথডের মধ্যে আপনার লজিক থাকবে
end
2. Action Methods
Action Methods হলো controller এর ফাংশন যা ইউজারের রিকোয়েস্ট অনুযায়ী বিভিন্ন কাজ করে এবং ভিউতে ডেটা পাঠায়। প্রতিটি অ্যাকশন একটি HTTP রিকোয়েস্টের জন্য দায়ী, যেমন GET, POST, PATCH, DELETE ইত্যাদি।
ধরা যাক, PostsController এ একটি index অ্যাকশন আছে, যা সব পোস্ট প্রদর্শন করবে।
class PostsController < ApplicationController
def index
@posts = Post.all
end
end
এখানে @posts হলো একটি instance ভেরিয়েবল, যা views/posts/index.html.erb ভিউতে ব্যবহার করা যাবে।
বিভিন্ন Action Methods
index: সব রিসোর্সের তালিকা প্রদর্শন করে।
def index
@posts = Post.all
end
show: একটি নির্দিষ্ট রিসোর্স প্রদর্শন করে।
def show
@post = Post.find(params[:id])
end
new: নতুন রিসোর্স তৈরি করার জন্য ফর্ম প্রদর্শন করে।
def new
@post = Post.new
end
create: নতুন রিসোর্স তৈরি করে ডেটাবেসে সংরক্ষণ করে।
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
edit: একটি রিসোর্সের তথ্য এডিট করার জন্য ফর্ম প্রদর্শন করে।
def edit
@post = Post.find(params[:id])
end
update: একটি রিসোর্স আপডেট করে ডেটাবেসে সংরক্ষণ করে।
def update
@post = Post.find(params[:id])
if @post.update(post_params)
redirect_to @post
else
render 'edit'
end
end
destroy: একটি রিসোর্স মুছে ফেলে।
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to posts_path
end
Strong Parameters
Rails এ Strong Parameters ব্যবহার করা হয় যাতে অ্যাকশনে নিরাপদভাবে ডেটা পাস করা যায়। উদাহরণস্বরূপ, create বা update অ্যাকশনে ডেটা সুরক্ষিতভাবে গ্রহণ করতে post_params মেথড ব্যবহার করা হয়।
private
def post_params
params.require(:post).permit(:title, :body)
end
এখানে params.require(:post).permit(:title, :body) শুধুমাত্র title এবং body পারামিটার গ্রহণ করতে দেবে, অন্য কোন ফিল্ড গ্রহণ করবে না।
রাউটিং এবং Controller
Rails এর রাউটিং ফাইল (config/routes.rb) কন্ট্রোলারের অ্যাকশনগুলির সাথে রিকোয়েস্টের ম্যাপিং নির্ধারণ করে।
Rails.application.routes.draw do
resources :posts
end
এই কমান্ডটি কন্ট্রোলারের সাধারণ CRUD অ্যাকশনগুলির জন্য রাউট তৈরি করবে, যেমন posts#index, posts#show, posts#new, posts#create, posts#edit, posts#update, এবং posts#destroy।
সারমর্ম
Ruby on Rails এ Controller এবং Action Methods অ্যাপ্লিকেশনের লজিক এবং ইউজারের রিকোয়েস্ট প্রক্রিয়াকরণে গুরুত্বপূর্ণ ভূমিকা পালন করে। কন্ট্রোলার বিভিন্ন অ্যাকশন মেথডের মাধ্যমে ডেটাবেস থেকে ডেটা রিট্রিভ করে এবং সেগুলো ভিউতে পাঠায়, যেখানে ইউজারদের জন্য উপস্থাপন করা হয়। Rails এ সঠিক রাউটিং এবং Strong Parameters ব্যবহারের মাধ্যমে নিরাপদ এবং কার্যকর ওয়েব অ্যাপ্লিকেশন তৈরি করা যায়।
Ruby on Rails-এ RESTful routes এবং resourceful routing দুটি গুরুত্বপূর্ণ ধারণা যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে সঠিক রাউটিং কাঠামো তৈরি করতে সাহায্য করে। এগুলি মডেল, ভিউ, এবং কন্ট্রোলারের মধ্যে সম্পর্ক বজায় রাখার জন্য ব্যবহৃত হয়, যাতে ওয়েব অ্যাপ্লিকেশনটি প্রাঞ্জল এবং মেইনটেনেবল থাকে।
RESTful Routes কী?
RESTful routes হল একটি রাউটিং কৌশল যা HTTP মেথড (GET, POST, PUT, DELETE) এবং URL পাথ ব্যবহার করে ওয়েব অ্যাপ্লিকেশনকে স্ট্যান্ডার্ডাইজডভাবে পরিচালনা করে। REST (Representational State Transfer) একটি ওয়েব আর্কিটেকচার স্টাইল যা ওয়েব সার্ভিসেসের মধ্যে তথ্য আদান-প্রদান সহজ করে তোলে।
Rails-এ RESTful রাউটিং মানে হল যে, রাউটের নামগুলি স্বয়ংক্রিয়ভাবে HTTP ক্রিয়াগুলির (GET, POST, PUT/PATCH, DELETE) সাথে সম্পর্কিত হবে, যা ডেভেলপারদের কোড লিখতে সাহায্য করে এবং রাউটিংকে সুনির্দিষ্ট ও স্ট্যান্ডার্ড রাখে।
RESTful রাউটের উদাহরণ
Rails একটি resourceful route তৈরি করার সময় স্বয়ংক্রিয়ভাবে নিচের মতো রাউটগুলি তৈরি করে:
- GET /articles - সকল আর্টিকেল দেখানোর জন্য।
- GET /articles/:id - নির্দিষ্ট একটি আর্টিকেল দেখানোর জন্য।
- GET /articles/new - নতুন আর্টিকেল তৈরি করার জন্য ফর্ম দেখাবে।
- POST /articles - নতুন আর্টিকেল তৈরি করার জন্য।
- GET /articles/:id/edit - নির্দিষ্ট আর্টিকেল এডিট করার জন্য ফর্ম।
- PATCH/PUT /articles/:id - নির্দিষ্ট আর্টিকেল আপডেট করার জন্য।
- DELETE /articles/:id - নির্দিষ্ট আর্টিকেল ডিলিট করার জন্য।
Resourceful Routing কী?
Resourceful routing Rails-এ একটি স্টাইল যা একটি নির্দিষ্ট resource (যেমন, Article, User, Product ইত্যাদি) সম্পর্কিত সব প্রয়োজনীয় রাউট একসঙ্গে তৈরি করতে সাহায্য করে। resources কিওয়ার্ড ব্যবহার করে আপনি একটি রিসোর্সের জন্য সব RESTful রাউট স্বয়ংক্রিয়ভাবে তৈরি করতে পারেন।
resourceful routing ব্যবহারের উদাহরণ:
যদি আপনি একটি ArticlesController তৈরি করতে চান, তবে Rails আপনাকে নিচের রাউটগুলো সংজ্ঞায়িত করতে সাহায্য করে:
# config/routes.rb
Rails.application.routes.draw do
resources :articles
end
এটি স্বয়ংক্রিয়ভাবে সব RESTful রাউট তৈরি করে:
GET /articles => articles#index
GET /articles/new => articles#new
POST /articles => articles#create
GET /articles/:id => articles#show
GET /articles/:id/edit => articles#edit
PATCH/PUT /articles/:id => articles#update
DELETE /articles/:id => articles#destroy
এছাড়া, আপনি যদি একটি সিঙ্গল রিসোর্সের জন্য রাউট তৈরি করতে চান, যেমন profile, তবে resource ব্যবহার করবেন, যা new এবং create ছাড়া অন্যান্য রাউট মুছে ফেলে:
# config/routes.rb
Rails.application.routes.draw do
resource :profile
end
এটি শুধু একক রিসোর্সের জন্য তৈরি হবে:
GET /profile => profiles#show
GET /profile/edit => profiles#edit
PATCH/PUT /profile => profiles#update
RESTful রাউটিং এবং Resourceful Routing এর সুবিধা
- সুন্দর ও সহজ রাউটিং: RESTful রাউটিং আপনাকে একটি সুনির্দিষ্ট স্টাইল অনুযায়ী অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। এটি রাউটের নাম, URL এবং HTTP মেথড গুলোকে স্ট্যান্ডার্ডাইজড করে।
- কনভেনশন ওভার কনফিগারেশন: Rails-এ resourceful routing ব্যবহার করলে রাউটগুলো স্বয়ংক্রিয়ভাবে তৈরি হয়, তাই আপনাকে একে একে সব রাউট কনফিগার করতে হয় না।
- রাউটগুলির পূর্ণাঙ্গ কাঠামো: resources কিওয়ার্ড ব্যবহার করে স্বয়ংক্রিয়ভাবে সব CRUD (Create, Read, Update, Delete) অপারেশন সম্পর্কিত রাউট তৈরি করা হয়, যা কোড লেখাকে সহজ এবং পরিষ্কার করে।
RESTful Routes এবং Resourceful Routing এর উদাহরণ
উদাহরণ ১: একটি নতুন resource তৈরি করা
# config/routes.rb
Rails.application.routes.draw do
resources :posts
end
এটি নিচের রাউটগুলো তৈরি করবে:
GET /posts => posts#index
GET /posts/new => posts#new
POST /posts => posts#create
GET /posts/:id => posts#show
GET /posts/:id/edit => posts#edit
PATCH/PUT /posts/:id => posts#update
DELETE /posts/:id => posts#destroy
উদাহরণ ২: সিঙ্গেল resource তৈরি করা
# config/routes.rb
Rails.application.routes.draw do
resource :account
end
এটি শুধুমাত্র সিঙ্গেল রিসোর্সের জন্য রাউট তৈরি করবে:
GET /account => accounts#show
GET /account/edit => accounts#edit
PATCH/PUT /account => accounts#update
সারমর্ম
RESTful routes এবং resourceful routing Rails-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ওয়েব অ্যাপ্লিকেশনের রাউটিংকে স্ট্যান্ডার্ড এবং কার্যকরী করে তোলে। RESTful routes HTTP মেথড এবং URL পাথ ব্যবহার করে একটি ওয়েব অ্যাপ্লিকেশনের ক্রিয়াকলাপকে সুনির্দিষ্ট করে, এবং resourceful routing এক বা একাধিক resource-এর জন্য স্বয়ংক্রিয়ভাবে প্রয়োজনীয় সব রাউট তৈরি করে। Rails-এ এই রাউটিং ব্যবস্থার মাধ্যমে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্ট আরো সহজ, দ্রুত এবং কাঠামোগত হয়ে ওঠে।
Rails Routing হল Ruby on Rails অ্যাপ্লিকেশনে ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার এবং অ্যাকশনে রিডাইরেক্ট করার প্রক্রিয়া। এটি অ্যাপ্লিকেশনের URL এর সাথে সম্পর্কিত রিকোয়েস্টগুলোকে উপযুক্ত কন্ট্রোলার এবং অ্যাকশনের মধ্যে ম্যাপ করে। রাউটিং অ্যাপ্লিকেশন ব্যবহারকারীদের জন্য URL এবং কন্ট্রোলারের মধ্যে সংযোগ স্থাপন করে, যাতে তাদের রিকোয়েস্ট সঠিকভাবে প্রক্রিয়া করা যায়।
Rails Routing এর মূল বিষয়
Rails Routing কন্ট্রোলার এবং অ্যাকশনগুলোর সাথে URL সম্পর্কিত ম্যাপিং তৈরি করে। এটি বিশেষভাবে config/routes.rb ফাইলে কনফিগার করা হয়। এই ফাইলটি অ্যাপ্লিকেশন রিকোয়েস্টের জন্য ডিফল্ট রাউটের নিয়ম নির্ধারণ করে।
Routing এর মৌলিক কাঠামো
config/routes.rb ফাইলে Rails রাউটিং নির্ধারণ করা হয়। এখানে আমরা যেভাবে রাউটিং করতে পারি তার কিছু উদাহরণ নিচে দেওয়া হলো:
১. Simple Routing (প্রাথমিক রাউটিং)
প্রাথমিক রাউটিং হচ্ছে একটি URL থেকে কন্ট্রোলার এবং অ্যাকশনের মধ্যে সম্পর্ক স্থাপন করা।
Rails.application.routes.draw do
get 'welcome/index'
end
এখানে, get 'welcome/index' রাউটটি URL /welcome/index কে WelcomeController এর index অ্যাকশনে রিডাইরেক্ট করবে।
২. Root Route (মূল রুট)
একটি ওয়েব অ্যাপ্লিকেশনের ডিফল্ট রাউট বা "root" রাউট নির্ধারণ করতে:
Rails.application.routes.draw do
root 'welcome#index'
end
এটি / URL-কে WelcomeController এর index অ্যাকশনে রিডাইরেক্ট করবে।
৩. RESTful Routing
Rails একটি RESTful রাউটিং স্টাইল ব্যবহার করে, যা সাধারণ CRUD (Create, Read, Update, Delete) অপারেশনগুলির জন্য স্বয়ংক্রিয়ভাবে রাউট তৈরি করে।
Rails.application.routes.draw do
resources :articles
end
এই কোডটি articles রিসোর্সের জন্য সব ধরনের রাউট তৈরি করবে:
- GET /articles →
ArticlesController#index - GET /articles/:id →
ArticlesController#show - POST /articles →
ArticlesController#create - GET /articles/new →
ArticlesController#new - GET /articles/:id/edit →
ArticlesController#edit - PATCH/PUT /articles/:id →
ArticlesController#update - DELETE /articles/:id →
ArticlesController#destroy
এটি Rails এর RESTful নীতির আওতায় কাজ করে, যেখানে একটি রিসোর্সের জন্য প্রতিটি অপারেশনকে একটি নির্দিষ্ট URL এবং HTTP মেথডের সাথে মেলানো হয়।
৪. Named Routes (নামকৃত রাউট)
নামকৃত রাউট ব্যবহার করলে রাউটের জন্য সহজে URL তৈরি করা যায়।
Rails.application.routes.draw do
get 'welcome/index', as: 'home'
end
এখানে, home_path ব্যবহার করে /welcome/index এর জন্য URL তৈরি করা যাবে:
<%= link_to 'Home', home_path %>
৫. Dynamic Segments (ডায়নামিক সেগমেন্ট)
Rails এ ডায়নামিক সেগমেন্ট ব্যবহার করে URL এর মধ্যে ভেরিয়েবল প্যারামিটার যোগ করা যায়।
Rails.application.routes.draw do
get 'articles/:id', to: 'articles#show'
end
এখানে, :id একটি প্লেসহোল্ডার, যা বাস্তবে কোনও মান যেমন 1, 2, বা abc হতে পারে। এটি ArticlesController এর show অ্যাকশনকে নির্দিষ্ট id প্যারামিটার দিয়ে কল করবে।
৬. HTTP মেথড অনুযায়ী রাউটিং
Rails বিভিন্ন HTTP মেথড (GET, POST, PATCH, DELETE) এর মাধ্যমে রাউটিং পরিচালনা করে।
Rails.application.routes.draw do
get 'articles', to: 'articles#index' # GET
post 'articles', to: 'articles#create' # POST
patch 'articles/:id', to: 'articles#update' # PATCH
delete 'articles/:id', to: 'articles#destroy' # DELETE
end
Rails Routing এর অগ্রগতি
- HTTP মেথডের প্রতি প্রতিক্রিয়া: রাউটিং HTTP মেথড অনুযায়ী কাজ করে, যেমন GET, POST, PUT, DELETE।
- RESTful রাউটিং: এটা Rails অ্যাপ্লিকেশনকে একটি পরিষ্কার কাঠামো দেয়, যাতে CRUD অপারেশনগুলো সহজে পরিচালিত হয়।
- নামকৃত রাউট: আপনি সহজেই রাউটের নাম ব্যবহার করে URL তৈরি করতে পারেন, যা অ্যাপ্লিকেশনকে আরও পরিষ্কার এবং লজিক্যাল করে তোলে।
- ডায়নামিক সেগমেন্টস: URL প্যারামিটার গ্রহণ করতে রাউটিং কাস্টমাইজ করা যায়।
সারমর্ম
Rails রাউটিং হল একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার এবং অ্যাকশনে পাঠাতে সাহায্য করে। এটি config/routes.rb ফাইলে নির্ধারণ করা হয়, যেখানে URL এবং কন্ট্রোলারের সম্পর্ক স্থাপন করা হয়। Rails এর রাউটিং সিস্টেম HTTP মেথড, RESTful রাউটিং, নামকৃত রাউট, এবং ডায়নামিক সেগমেন্ট ব্যবহার করে অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ এবং সুশৃঙ্খল করে তোলে।
Read more