কম্পিউটার টিউটোরিয়াল

রেইলস `link_to` হেল্পার মাস্টার করুন: উদাহরণসহ বিস্তারিত গাইড

রেইলস link_to মেথড!

আপনার সকল রেইলস অ্যাপ্লিকেশনে আপনি যেসব হেল্পার মেথড সবচেয়ে বেশি ব্যবহার করবেন সেটির একটি।

কিন্তু এটি কীভাবে কাজ করে?

আপনি যদি link_to এবং এর সাথে ব্যবহার করার বিভিন্ন অপশন সম্পর্কে শিখতে এখানে এসেছেন তবে আপনি সঠিক জায়গায় আছেন!

প্রথমে…

link_to কী করে?

ভালো, এই পুরো ওয়েবসাইট জিনিসটি শুধুই কাজ করে কারণ আমাদের পেজগুলোর মাঝপথে লিংক রয়েছে।

এটিই হলো যেভাবে আপনি এক পেজ থেকে অন্য পেজে যান।

সাদা HTML-এ, আপনি একটি লিংক এইভাবে তৈরি করেন:

Improve Your Ruby Skills

কিন্তু রেইলসে সেটি এইরকম দেখাবে:

<%= link_to "Improve Your Ruby Skills", "/ruby-book" %>

কেন?

কারণ আমরা রেইলসে রুটস ব্যবহার করি।

আমরা সেটির সুবিধা নিতে চাই _path মেথডগুলো ব্যবহার করে এবং সেটিকে আমাদের লিংকের টার্গেট (href) বানাতে।

link_to ব্যবহার করে এটি সহজ হয় কারণ আমাদের ভ্যালু ইন্টারপোলেট করতে হয় না।

আমি কী বোঝাতে চাই:

Improve Your Ruby Skills

এখন:

চলুন এই মেথডের সবচেয়ে সহায়ক অপশনাল আর্গুমেন্টগুলোতে গভীরে যাই।

রেইলস link_to অপশন ও আর্গুমেন্টস

link_to-র প্রথম আর্গুমেন্ট হলো লিংক上的 টেক্সট।

দ্বিতীয় আর্গুমেন্ট? এটি হলো যে URL-এ আপনি লিংক করছেন।

আপনি এটিকে হার্ডকোড করতে পারেন যদি চান, लेकिन অধিকাংশ সময় আপনি একটি রেইলস মডেল, বা একটি _path মেথড ব্যবহার করবেন।

যদি আপনি সঠিক কনভেনশন ফলো করেন তবে রেইলস জিনিসগুলো বুঝতে পারবে।

উদাহরণ:

<%= link_to "Improve Your Ruby Skills", book_path(@book) %>

অথবা:

<%= link_to "Improve Your Ruby Skills", @book %>

আপনি কীভাবে জানবেন কোনটি ব্যবহার করবেন?

  • সিঙ্গুলার ফর্ম যখন একটি নির্দিষ্ট রিসোর্স (book) রেফার করছেন
  • প্লুরাল ফর্ম যখন একটি কলেকশন (books) রেফার করছেন

উদাহরণ:

# Plural
<%= link_to "All Books", books_path %>
# Singular
<%= link_to "Edit Book", edit_book_path(@book) %>

আপনার রুটস দেখতে (with rake routes) ও সাহায্য করে।

১ম কলামে নাম থাকে (যেমন edit_book) যা আপনি আপনার লিংকে _path যোগ করে ব্যবহার করতে পারেন।

কনফার্মেশনসহ ডিলিট লিংক

দুটি সহায়ক অপশন আপনি ব্যবহার করতে পারেন:

  • confirm
  • disable_with

উদাহরণ:

<%= link_to "Delete Book", @book, method: "delete", { confirm: "Are you sure?", disable_with: "Processing..." } %>

এক লিংকের ডিফল্ট অ্যাকশন হলো GET রিকোয়েস্ট।

আপনি যদি "DELETE" অ্যাকশন ব্যবহার করতে চান তবে আপনাকে স্পেসিফিক হতে হবে।

কিন্তু…

আপনি যদি প্রিভিয়াস পেজের লিংক চান? এটি ট্রাই করুন:

<%= link_to "Back", :back %>

কাস্টম CSS ক্লাস ও HTML অ্যাট্রিবিউট কীভাবে ব্যবহার করবেন

আপনি CSS ব্যবহার করে আপনার লিংকগুলোকে আলাদা লুক দিতে পারেন।

উদাহরণ:

<%= link_to "Get More Books", books_path, class: "index-link" %>

আপনার কাছে যদি এই CSS থাকে:

.index-link { color: blue; padding: 10px; }

আপনাকে যদি আরও HTML অ্যাট্রিবিউট দরকার হয় (যেমন "id") তবে আপনি লিংক টেক্সট এবং লিংক URL-এর পরে সেগুলো যোগ করতে পারেন।

কোয়েরি প্যারামস এবং অ্যাঙ্কর লিংক কীভাবে তৈরি করবেন

আপনি যেন এক্সট্রা ডেটা এক্সেস করতে পারেন আপনার কন্ট্রোলার থেকে ইউজার লিংকে ক্লিক করার পরে।

চলুন কিছু উদাহরণ দেখি!

আপনি যদি এইরকম URL তৈরি করতে চান:

"/search?q=all"

তাহলে আপনি এইভাবে করতে পারেন:

<%= link_to "Search ALL", search_path(q: "all") %>

এবং এই URL-এর জন্য:

"/books#programming"

আপনি এইভাবে করতে পারেন:

<%= link_to "Programming Books", books_path(anchor: "programming") %>

URL হেল্পার্স (_path / _url) এর সাথে কম্বাইন্ড, link_to আপনাকে সारी ফ্লেক্সিবিলিটি দেয় যা আপনার দরকার।

ইমেজের সাথে লিংকিং

অনেক লোক জানেন না যে link_to একটি অপশনাল ব্লক নেয়।

এটি আরও জটিল সিনেরিও ইনেবল করে।

যেমন একটি ইমেজের সাথে লিংকিং:

<%= link_to books_path do %>
  <%= image_tag "Book Collection" %>
<% end %>

এই উদাহরণে, ব্লকের কন্টেন্ট লিংকিং টেক্সট, ইমেজ বা যেকোনো অন্য HTML এলিমেন্ট হয়ে যায় যেটি আপনি ক্লিকেবল করতে চান।

সারসংক্ষেপ

আপনি রেইলসে link_to মেথড সম্পর্কে শিখেছেন!

আপনি যদি এই আর্টিকেলটি উপকারী পান তবে আমার রুবি বইয়ের একটি কপি নিন যাতে আপনি আপনার রুবি স্কিল সুপার-চার্জ করতে পারেন এবং আমার কাজ সাপোর্ট করতে পারেন।

পড়ার জন্য ধন্যবাদ 🙂

  1. রেইলসে OmniAuth-Twitter দিয়ে টুইটার লগইন ইন্টিগ্রেট করুন: ধাপে ধাপে গাইড

  2. Linux Watch কমান্ড 습득: সিনট্যাক্স, অপশন এবং প্রয়োগিক উদাহরণ

  3. এক্সেল VBA-তে টেবিল রেফারেন্সিং মास্টার করুন - ২০টি প্রমাণিত কৌশল

  4. এক্সেল ডাটাবেস ফাংশনগুলোর মাস্টার গাইড: ব্যাবহারিক উদাহরণসহ ধাপে ধাপে নির্দেশনা