ফলকগুলি ফলন কিনা তা পরীক্ষা করে: অঞ্চলটি বিষয়বস্তু_তে সংজ্ঞায়িত করা হয়


উত্তর:


217

@content_for_whateverঅবচয় করা হয়। content_for?পরিবর্তে এটি ব্যবহার করুন :

<% if content_for?(:whatever) %>
  <div><%= yield(:whatever) %></div>
<% end %>

16
সহায়ক content_for?কেবলমাত্র কারাগারে রয়েছে 3.. রেল ২ এ আপনি @content_for_...উদাহরণ পরিবর্তনশীল ব্যবহার করতে পারেন ।
পাছে

10

কোনও সহায়ক পদ্ধতি তৈরি করার জন্য সত্যই প্রয়োজনীয় নয়:

<% if @content_for_sidebar %>
  <div id="sidebar">
    <%= yield :sidebar %>
  </div>
<% end %>

অবশ্যই আপনার দৃষ্টিতে:

<% content_for :sidebar do %>
  ...
<% end %>

আমি শর্তাধীনভাবে একটি কলাম এবং দুটি কলাম লেআউটের মধ্যে যেতে সর্বদা এটি ব্যবহার করি



2

একটি সহায়ক তৈরি করতে পারেন:

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 %>

এটি প্রশ্নের উত্তর দেয় না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন।
eirikir

আমি @ ইরিকিরের সাথে একমত, আমার 6 বছরের কম বয়সী স্ব কি ভাবছেন তা নিশ্চিত নই। আমি এখনও জেল 2-এ রয়েছি তাদের জন্য আমার উত্তর বাড়িয়ে দিচ্ছি এবং অপ্রয়োজনীয় উপস্থাপনা ছাড়াই ছেড়ে দিচ্ছি;)
নিক

1

ঠিক আছে আমি নির্লজ্জভাবে একটি স্ব-জবাব দিতে যাচ্ছি কারণ কেউ উত্তর দেয়নি এবং আমি ইতিমধ্যে উত্তরটি খুঁজে পেয়েছি :) এটি অ্যাপ্লিকেশন_হেল্পার.আরবিতে বা আপনি যে কোনও জায়গায় সুবিধাজনক বলে খুঁজে পেয়ে সহায়তা সহায়ক পদ্ধতি হিসাবে এটি সংজ্ঞায়িত করুন।

  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)এটি শূন্য কিনা তা পরীক্ষা করার পরিবর্তে কিছুটা পরিষ্কার। দ্বিতীয় বড় বিষয়, বিষয়বস্তুর_পরিবর্তনযোগ্য ভেরিয়েবলটিকে হ্রাস করা হয়েছে সুতরাং আপনার সমাধানটি ভবিষ্যতের প্রমাণ নয়
ডেভ নোলান

1

দুবার ফলন কল করার পারফরম্যান্সের প্রভাব সম্পর্কে আমি নিশ্চিত নই, তবে ফলনটির অভ্যন্তরীণ বাস্তবায়ন (@ কনটেন্ট_ফর্ম_কাজি অবহেলিত) এবং কোনও অতিরিক্ত কোড বা সহায়তাকারী পদ্ধতি ছাড়াই এটি করবে:

<% if yield :sidebar %>
  <div id="sidebar">
    <%= yield :sidebar %>
  </div>
<% end %>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.