প্রকৃত টেমপ্লেটের উপর ভিত্তি করে লেআউট স্তরে শর্তযুক্ত রেন্ডারিং আমি করতে চাই content_for(:an__area)
, এটি কীভাবে করবেন?
প্রকৃত টেমপ্লেটের উপর ভিত্তি করে লেআউট স্তরে শর্তযুক্ত রেন্ডারিং আমি করতে চাই content_for(:an__area)
, এটি কীভাবে করবেন?
উত্তর:
কোনও সহায়ক পদ্ধতি তৈরি করার জন্য সত্যই প্রয়োজনীয় নয়:
<% if @content_for_sidebar %>
<div id="sidebar">
<%= yield :sidebar %>
</div>
<% end %>
অবশ্যই আপনার দৃষ্টিতে:
<% content_for :sidebar do %>
...
<% end %>
আমি শর্তাধীনভাবে একটি কলাম এবং দুটি কলাম লেআউটের মধ্যে যেতে সর্বদা এটি ব্যবহার করি
একটি সহায়ক তৈরি করতে পারেন:
def content_defined?(var)
content_var_name="@content_for_#{var}"
!instance_variable_get(content_var_name).nil?
end
এবং এটি আপনার বিন্যাসে ব্যবহার করুন:
<% if content_defined?(:an__area) %>
<h1>An area is defined: <%= yield :an__area %></h1>
<% end %>
ঠিক আছে আমি নির্লজ্জভাবে একটি স্ব-জবাব দিতে যাচ্ছি কারণ কেউ উত্তর দেয়নি এবং আমি ইতিমধ্যে উত্তরটি খুঁজে পেয়েছি :) এটি অ্যাপ্লিকেশন_হেল্পার.আরবিতে বা আপনি যে কোনও জায়গায় সুবিধাজনক বলে খুঁজে পেয়ে সহায়তা সহায়ক পদ্ধতি হিসাবে এটি সংজ্ঞায়িত করুন।
def content_defined?(symbol)
content_var_name="@content_for_" +
if symbol.kind_of? Symbol
symbol.to_s
elsif symbol.kind_of? String
symbol
else
raise "Parameter symbol must be string or symbol"
end
!instance_variable_get(content_var_name).nil?
end
instance_variable_defined?(content_var_name)
এটি শূন্য কিনা তা পরীক্ষা করার পরিবর্তে কিছুটা পরিষ্কার। দ্বিতীয় বড় বিষয়, বিষয়বস্তুর_পরিবর্তনযোগ্য ভেরিয়েবলটিকে হ্রাস করা হয়েছে সুতরাং আপনার সমাধানটি ভবিষ্যতের প্রমাণ নয়