Chcę wykonać renderowanie warunkowe na poziomie układu w oparciu o rzeczywisty zdefiniowany szablon content_for(:an__area)
, masz jakiś pomysł, jak to zrobić?
ruby-on-rails
layout
yield
William Yeung
źródło
źródło
Odpowiedzi:
@content_for_whatever
jest przestarzałe.content_for?
Zamiast tego użyj w ten sposób:źródło
content_for?
istnieje tylko w Railsach 3. W Railsach 2 można użyć@content_for_...
zmiennej instancji.nie jest konieczne do stworzenia metody pomocniczej:
to oczywiście Twoim zdaniem:
Używam tego cały czas, aby warunkowo przechodzić między układem jednokolumnowym a dwumolowym
źródło
źródło
Potrafi stworzyć pomocnika:
I użyj tego w swoim układzie:
źródło
Ok, mam zamiar bezwstydnie odpowiedzieć sobie, ponieważ nikt nie odpowiedział, a ja już znalazłem odpowiedź :) Zdefiniuj to jako metodę pomocniczą w application_helper.rb lub w innym miejscu, które uważasz za wygodne.
źródło
instance_variable_defined?(content_var_name)
jest trochę zgrabniejsza niż zamiast sprawdzać, czy jest zerowa. Druga ważna kwestia, zmienna content_for instance jest przestarzała, więc Twoje rozwiązanie nie jest przyszłościoweNie jestem pewien wpływu dwukrotnego wywołania wydajności, ale zrobi to niezależnie od wewnętrznej implementacji zysku (@content_for_xyz jest przestarzałe) i bez dodatkowego kodu lub metod pomocniczych:
źródło