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 ব্যবহারের মাধ্যমে নিরাপদ এবং কার্যকর ওয়েব অ্যাপ্লিকেশন তৈরি করা যায়।
Read more