ফ্ল্যাশ বার্তা কি?
একটি ফ্ল্যাশ বার্তা হল আপনার রেল অ্যাপ্লিকেশনের ব্যবহারকারীদের সাথে তথ্য যোগাযোগ করার একটি উপায় যাতে তারা জানতে পারে তাদের ক্রিয়াকলাপের ফলে কী ঘটে৷
উদাহরণ বার্তা৷ :
- "পাসওয়ার্ড সঠিকভাবে পরিবর্তিত হয়েছে" (নিশ্চিতকরণ)
- "ব্যবহারকারী পাওয়া যায়নি" (ত্রুটি)
আপনি আপনার কন্ট্রোলারগুলিতে এই ফ্ল্যাশ বার্তাগুলি সেট করেন, তারপরে আপনি সেগুলিকে আপনার দৃষ্টিভঙ্গিতে রেন্ডার করেন। আপনার ব্যবহারকারীরা তারপর সেই অনুযায়ী কাজ করতে পারে৷
আসুন জেনে নিই ঠিক কিভাবে এটি কাজ করে!
ফ্ল্যাশ বার্তাগুলি কীভাবে ব্যবহার করবেন
আপনি flash
ব্যবহার করে এই বিজ্ঞপ্তি বার্তাগুলির সাথে কাজ করতে পারেন৷ সহায়ক পদ্ধতি।
এটি অনেকটা রুবি হ্যাশের মতো আচরণ করে৷
৷
ফ্ল্যাশ বস্তুতে keys
এর মত পদ্ধতি রয়েছে , any?
অথবা each
এবং আপনি []
দিয়ে একটি নির্দিষ্ট বার্তা অ্যাক্সেস করতে পারেন .
আপনি কি ধরনের ফ্ল্যাশ বার্তা সেট করতে পারেন?
ডিফল্টরূপে আপনার আছে :
- বিজ্ঞপ্তি
- সতর্কতা
এটি কীভাবে ব্যবহার করবেন তার একটি উদাহরণ এখানে দেওয়া হল৷ :
flash.alert = "User not found."
অথবা যদি আপনি পছন্দ করেন :
flash[:alert] = "User not found."
(শুধু একটি শৈলী পার্থক্য।)
আপনি এই কোডটি আপনার কন্ট্রোলার অ্যাকশনের মধ্যে ব্যবহার করতে পারেন, যেমন index
, create
, new
, ইত্যাদি।
অন্য উপায় হল এটি :
redirect_to :books_path, notice: "Book not found"
এটি আপনাকে একটি ধাপে একটি ফ্ল্যাশ বার্তা পুনর্নির্দেশ এবং তৈরি করতে দেয়৷
৷চমৎকার!
সতর্ক বনাম বিজ্ঞপ্তি
যতদূর আমি বুঝতে পারি আপনি যদি alert
ব্যবহার করেন তবে এটি কোন ব্যাপার না অথবা notice
.
আপনার পরিস্থিতির জন্য আরও স্বাভাবিক মনে হয় এমন একটি ব্যবহার করুন৷
৷
আমি alert
সম্পর্কে ভাবতে পছন্দ করি একটি ত্রুটি বার্তা এবং একটি notice
হিসাবে একটি নিশ্চিতকরণ বার্তা হিসাবে৷
তাদের আলাদা করা আপনাকে তাদের ভিন্নভাবে স্টাইল করতে সহায়তা করে।
উদাহরণস্বরূপ :
আপনি লাল রঙে সতর্কতা এবং সবুজে বিজ্ঞপ্তি দেখাতে পারেন।
add_flash_types
ব্যবহার করে আপনার নিজস্ব ফ্ল্যাশ প্রকারগুলি তৈরি করাও সম্ভব কন্ট্রোলার পদ্ধতি।
এরকম :
class ApplicationController add_flash_types :info, :error, :warning end
আমি জিনিসগুলি সহজ রাখতে পছন্দ করি, তাই আমি অন্তর্নির্মিত প্রকারের সাথে লেগে থাকি 🙂
ফ্ল্যাশ বার্তা রেন্ডারিং
ফ্ল্যাশ বার্তাগুলি স্বয়ংক্রিয়ভাবে দেখানো হয় না৷
৷আপনাকে সেগুলি আপনার ভিউগুলির মধ্যে একটি রেন্ডার করতে হবে যাতে ব্যবহারকারীরা সেগুলি দেখতে পারেন৷
আপনার অ্যাপ্লিকেশন লেআউটে এটি যোগ করার কথা বিবেচনা করুন।
এখানে একটি কোড উদাহরণ :
<% flash.each do |type, msg| %> <%= msg %> <% end %>
আপনি যেখানেই আপনার বিজ্ঞপ্তি দেখাতে চান সেখানে এটি রাখুন, সাধারণত পৃষ্ঠার শীর্ষে, মেনু বারের নীচে৷
মনে রাখবেন :
একবার আপনি একটি বার্তা রেন্ডার করলে তা flash
থেকে সরানো হবে , তাই এটি আর দেখানো হবে না৷
আপনার নোটিশ এবং সতর্কতা বার্তা স্টাইল করা
ফ্ল্যাশ বার্তাগুলির কোনও অন্তর্নির্মিত নকশা বা শৈলী নেই৷
৷সমাধান?
আপনি যদি বুটস্ট্র্যাপ ব্যবহার করেন, আপনি "alert alert-info"
ব্যবহার করতে পারেন ফ্ল্যাশ বার্তাগুলিকে সুন্দর দেখানোর জন্য CSS ক্লাস।
উদাহরণ :
<% flash.each do |type, msg| %> <%= msg %> <% end %>
এটা এরকম দেখাচ্ছে :
আপনি যদি বুটস্ট্র্যাপ ব্যবহার না করে থাকেন, তাহলে আপনি আপনার নিজের সিএসএস লিখতে পারেন যাতে আপনি এটিকে দেখতে চান।
ফ্ল্যাশ বার্তা কখন রেন্ডার করা হয়?
ফ্ল্যাশ বার্তাগুলি শুধুমাত্র আপনার পরবর্তী কন্ট্রোলার অ্যাকশনে মুছে ফেলা হয়, আপনার প্রদর্শনের পরে৷
৷অর্থ :
- যদি আপনি
redirect_to
, তারপর একটিflash
রেন্ডার করুন বার্তা, এটা ভালো - যদি আপনি
redirect_to
এবং বার্তাটি রেন্ডার করবেন না, বার্তাটিflash
এ লেগে থাকবে হ্যাশ - যদি আপনি
render
করেন আপনিflash
সেট করছেন সেই একই কর্মে বার্তা, যেflash
বার্তা উপলব্ধ হবে, কিন্তু সরানো হবে না তাই এটি আশেপাশে থাকবে এবং সম্ভাব্যভাবে দুবার দেখানো হবে
তাই…
আপনি যদি একটি বর্তমান ক্রিয়াকলাপের জন্য ফ্ল্যাশ বার্তা সেট করতে চান তাহলে কি হবে৷ ?
সেখানেই flash.now
আসে!
এখানে একটি উদাহরণ আছে :
def index @books = Book.all flash.now[:notice] = "We have exactly #{@books.size} books available." end
এটি index
রেন্ডার করবে দেখুন।
notice
বার্তা দেখানো হবে এবং flash
থেকে সরানো হবে তাই এটি দুবার দেখানো হবে না।
অন্য কথায় :
আপনাকে শুধুমাত্র flash.now
ব্যবহার করতে হবে যদি আপনি render
করতে যাচ্ছেন রিডাইরেক্ট করার পরিবর্তে।
সারাংশ
আপনি Rails-এ ফ্ল্যাশ বার্তা এবং কীভাবে সেগুলি সঠিকভাবে ব্যবহার করতে হয় সে সম্পর্কে শিখেছেন!
Btw, ফ্ল্যাশ বার্তাগুলি বৈধতা ত্রুটির মতো নয়। বৈধতাগুলি মডেল অবজেক্টের সাথে যুক্ত, এবং আপনি errors
সহ এই বৈধতা বার্তাগুলি অ্যাক্সেস করেন পদ্ধতি, যেমন @user.errors
.
এখন আপনার পালা কিছু কোড লিখে এটিকে অনুশীলনে আনার।
পড়ার জন্য ধন্যবাদ!