রেলে রেন্ডারিং কি?
রেন্ডারিং হল আপনার রুবি অন রেল অ্যাপ্লিকেশনের চূড়ান্ত লক্ষ্য। আপনি একটি ভিউ রেন্ডার করেন, সাধারণত .html.erb
ফাইল, যাতে HMTL এবং রুবি কোডের মিশ্রণ রয়েছে।
একটি ভিউ হল যা ব্যবহারকারী দেখেন৷ .
এটি আপনার রেল অ্যাপের সমস্ত কাজের ফলাফল। ভিউগুলি ব্যবহারকারীর অনুরোধের জন্য যুক্তি, ডেটা এবং ভিউ টেমপ্লেটগুলিকে একত্রিত করে৷
এমনকি একটি JSON প্রতিক্রিয়া ফেরত দেওয়াকে একটি দৃশ্য হিসাবে বিবেচনা করা যেতে পারে।
তাই আপনি যা পারেন তা শিখছেন রেলে রেন্ডারিং সিস্টেম সম্পর্কে গুরুত্বপূর্ণ আপনি যদি না চান আপনার সমস্ত কাজ নষ্ট হোক।
রেলে রেন্ডারিং কিছু আশ্চর্যজনক আচরণ তৈরি করতে পারে। তাই আপনি যত বেশি জানবেন ততই ভালো।
বেসিক দিয়ে শুরু করা যাক!
ভিউ রেন্ডারিংয়ের মূল বিষয়গুলি
ডিফল্টরূপে, আপনাকে কিছু রেন্ডার করার জন্য Rails-কে বলতে হবে না এবং যতক্ষণ বাকি সবকিছু সঠিকভাবে সেট আপ করা হবে ততক্ষণ পর্যন্ত ভিউ কাজ করবে।
এটি "কনভেনশন ওভার কনফিগারেশন" এর অংশ।
এটা কিভাবে কাজ করে?
ঠিক আছে, রেলগুলি অনুমান করে, যা আপনি হয়তো জানেন না৷
এটি আপনার কাজ বাঁচায়।
কিন্তু আপনি যদি জানেন না কি ঘটছে তা জাদুর মত মনে হতে পারে।
এখানেই আপনি সমস্যায় পড়তে পারেন!
এই বিশেষ ক্ষেত্রে, অনুমানটি রেলগুলি করে যে আপনি অনুরোধটি পরিচালনাকারী নিয়ামক অ্যাকশনের মতো একই নামে একটি টেমপ্লেট রেন্ডার করতে চান৷
তাই আপনি যদি BooksController#index
কল করেন … রেল books/index.erb
রেন্ডার করে .
এখন :
আপনি এই রেন্ডারিং এর উপর আরো নিয়ন্ত্রণ পেতে পারেন।
এটি আপনাকে ডিফল্ট থেকে একটি ভিন্ন ভিউ রেন্ডার করতে দেয়।
এখানে কিভাবে :
class BooksControllerএটি
books/listing.erb
রেন্ডার করে (বা.haml
যদি আপনি HAML ভিউ ব্যবহার করেন)।আপনি প্রতীকের পরিবর্তে একটি স্ট্রিং ব্যবহার করতে পারেন।
এরকম :
রেন্ডার 'শেয়ারড/বোটন'রেলগুলি
shared/buttons.erb
রেন্ডার করবে .একটি জিনিস আপনার জানা দরকার
অন্য ক্রিয়াকলাপের সাথে যুক্ত একটি ভিউ রেন্ডার করলে সেই ক্রিয়া চলবে না৷
৷অন্য কথায়,
render :index
কল করা ভিতরেcreate
index
চালাবে না পদ্ধতি।এটা কেন গুরুত্বপূর্ণ?
কারণ সেই ভিউয়ের জন্য ইনস্ট্যান্স ভেরিয়েবল সেট করা হবে না!
আপনাকে সেগুলি নিজেই সেট করতে হবে৷
উদাহরণ :
def index @users =User.allend# এখানে `@users` অনুপস্থিত একটি ত্রুটি বা একটি খালি সূচক ভিউ হবে# আপনি পরিবর্তে `redirect_to` ব্যবহার করতে পারেন, সেক্ষেত্রে `index` রেন্ডার তৈরি করবে :indexendপ্রে>এর থেকে রেন্ডার করার আরও অনেক কিছু আছে।
চলুন চালিয়ে যাই!
বিভিন্ন ধরনের রেন্ডারিং
একটি টেমপ্লেট রেন্ডার করার পাশাপাশি আপনার কাছে অন্যান্য বিকল্প রয়েছে।
আপনি পারেন :
- একটি HTML স্ট্রিং রেন্ডার করুন
- একটি প্লেইন টেক্সট স্ট্রিং রেন্ডার করুন
- জেএসএন রেন্ডার করুন
আপনার যদি ত্রুটিগুলি পরিচালনা করার জন্য একটি সঠিক টেমপ্লেট না থাকে তবে একটি স্ট্রিং রেন্ডার করা কোনও ধরণের ত্রুটি বার্তা দেখানোর জন্য বিকাশের সময় সহায়ক হতে পারে৷
অথবা যদি আপনি একটি নির্দিষ্ট কন্ট্রোলার অ্যাকশনের জন্য এখনও আপনার ভিউ লিখতে প্রস্তুত না হন।
এখানে একটি উদাহরণ :
যদি @ব্যবহারকারী রেন্ডার :শোয়েলস রেন্ডার প্লেইন:"ব্যবহারকারী পাওয়া যায়নি।"endJSON রেন্ডারিং সরাসরি একটি সাধারণ API তৈরি করতে ব্যবহার করা যেতে পারে, এটি সর্বোত্তম পদ্ধতি নয় তবে এটি আপনাকে শুরু করতে সাহায্য করতে পারে৷
উদাহরণ :
json রেন্ডার করুন:@userআমি রেন্ডার এইচটিএমএল ব্যবহার করিনি, তবে আপনার যদি এটির জন্য ভাল ব্যবহার থাকে তবে আমাকে জানান!
কিভাবে আংশিক রেন্ডার করবেন
রেন্ডারিং কন্ট্রোলারের বাইরে যায়৷
এছাড়াও আপনি দেখার মধ্যে ভিউ রেন্ডার করতে পারেন৷ .
আমরা এটাকে আংশিক বলি।
আপনি কেন এটি করতে চান?
ক্লিনার কোড এবং কোড পুনঃব্যবহার।
আপনি যদি 3টি ভিন্ন পৃষ্ঠায় একই ফর্ম ব্যবহার করেন তবে এটি একটি ভাল ধারণা হতে পারে এটি একটি আংশিক রূপে বের করা .
এখন আপনি যখন পরিবর্তন করতে চান তখন আপনাকে এটি শুধুমাত্র একটি জায়গায় করতে হবে৷
৷এখানে একটি উদাহরণ :
<%=রেন্ডার :ফর্ম %>এটি কাজ করার জন্য আপনাকে একটি আন্ডারস্কোর দিয়ে শুরু করে আপনার ভিউ ফাইলের নাম দিতে হবে, যেমন
_form.erb
, কিন্তু যখন আপনিrender
কল করেন আপনার আন্ডারস্কোরের দরকার নেই।আপনি ইনস্ট্যান্স ভেরিয়েবল অ্যাক্সেস করতে সক্ষম হবেন আংশিক থেকে...
কিন্তু স্থানীয় ভেরিয়েবল সম্পর্কে কি?
আপনি এটি করতে পারেন৷ :
<%=রেন্ডার :ফর্ম, বার্তা:"অ্যাপলস আর গুড" %>এটি আপনাকে
message
-এ অ্যাক্সেস দেয় আপনার আংশিক একটি স্থানীয় পরিবর্তনশীল হিসাবে।পরবর্তী :
আপনি শিখতে যাচ্ছেন কিভাবে আপনি শুধুমাত্র একটি
render
দিয়ে একাধিক জিনিস রেন্ডার করবেন কল করুন!কিভাবে সংগ্রহ রেন্ডার করবেন
আংশিকগুলি আপনাকে লুপ ছাড়াই সংগ্রহগুলি রেন্ডার করতে সহায়তা করে৷
ধরা যাক আপনি
@books
রেন্ডার করছেন .আপনি এটি করতে পারেন৷ :
<%=রেন্ডার @books %>আপনার
_book.erb
থাকলে এটি কাজ করবে আংশিক এবংbook
ব্যবহার করুন সেই টেমপ্লেটের ভিতরে আপনার ভেরিয়েবল হিসাবে।উদাহরণ :
# app/views/books/_book.erb <%=image_tag(book.cover) %><%=book.title %>
<%=book.author %> <%=link_to "পড়ুন বই", বই %>আপনার যদি বর্তমান বই নম্বরের প্রয়োজন হয় (আপনার CSS ক্লাসের জন্য) আপনি
book_counter
ব্যবহার করতে পারেন .যেখানে
book_
আপনার মডেলের নাম।আমি মনে করি সংগ্রহ রেন্ডারিং আমার প্রিয় রেল বৈশিষ্ট্যগুলির মধ্যে একটি!
রেলের লেআউট বোঝা
আপনি যখন একটি নতুন রেল অ্যাপ তৈরি করেন তখন এটি ভিউ ফোল্ডারের অধীনে একটি "লেআউট" ফোল্ডার নিয়ে আসে৷
৷সেখানে আপনি
application.html.erb
পাবেন ফাইল।এটাই ডিফল্ট লেআউট!
লেআউট কি?
একটি লেআউট আপনাকে আপনার সাইটটিকে একটি সামঞ্জস্যপূর্ণ চেহারা দিতে দেয়৷
এটি :
- মেনু
- ফুটার
- সিএসএস এবং জাভাস্ক্রিপ্ট ফাইল লোড হচ্ছে...
বেশিরভাগ সময় ডিফল্ট লেআউট ঠিক থাকে।
কিন্তু আপনি যদি একটি নির্দিষ্ট পৃষ্ঠার জন্য একটি ভিন্ন লেআউট চান?
আপনি
layout
ব্যবহার করতে পারেন বিকল্প।উদাহরণ :
render :index, লেআউট:'admin'আপনি লেআউটটি নিষ্ক্রিয় করতে পারেন৷ :
রেন্ডার :index, লেআউট:মিথ্যাএবং আপনি নিয়ামক স্তরে লেআউট সেট করতে পারেন।
এরকম :
ক্লাস অ্যাডমিন কন্ট্রোলার <অ্যাপ্লিকেশন কন্ট্রোলার লেআউট 'প্রশাসক'এন্ডরেন্ডারিং একটি ক্রিয়া শেষ করে না
বিভ্রান্তির একটি সাধারণ বিষয় ভাবা হচ্ছে যে একটি কন্ট্রোলার অ্যাকশনের ভিতরে রেন্ডার করা (এবং পুনঃনির্দেশ করা) এর পরে যেকোনও কোড চালানো বন্ধ করবে৷
আপনি
render
কল করলে আপনি এর সাথে যোগাযোগ করতে পারেন একাধিক বার।উদাহরণ :
def তৈরি করুন যদি হলুদ_ফল? রেন্ডার :bananas end রেন্ডার :applesendএর ফলে একটি ত্রুটি দেখা দেবে কারণ
render :apples
সবসময় চলে এবং আপনি একই কন্ট্রোলার অ্যাকশনে দুবার রেন্ডার করতে পারবেন না।এখানে সমাধান আছে :
def তৈরি করুন যদি হলুদ_ফল? রেন্ডার :bananas else রেন্ডার :apples endendআরেকটি বিকল্প হতে পারে
return
ব্যবহার করাrender
এর পরে কীওয়ার্ড , কিন্তু স্পষ্টতার জন্য, মধ্যম পদ্ধতিreturn
এড়িয়ে চলাই ভালো বিবৃতি যখনই সম্ভব।সারাংশ
আপনি Ruby on Rails-এ রেন্ডারিংয়ের সব-গুরুত্বপূর্ণ বিষয় সম্পর্কে শিখেছেন।
রেন্ডারিং আপনাকে আপনার অ্যাপ্লিকেশনের ব্যবহারকারীদের কাছে সামগ্রী ফেরত দেওয়ার অনুমতি দেয় এবং এটি আপনার নিয়ামক ক্রিয়াগুলির মধ্যে একটি চূড়ান্ত পদক্ষেপ। রেন্ডারিং বোঝা আপনাকে আরও ভাল রেল অ্যাপ্লিকেশন লিখতে সাহায্য করে।
এখন আপনার পালা, আপনার সম্পাদক খুলুন এবং আপনার কোডিং দক্ষতা অনুশীলন করুন।
পড়ার জন্য ধন্যবাদ!