طريقة أفضل للعرض المشروط معلومات في وجهات النظر؟

StackOverflow https://stackoverflow.com/questions/1697893

  •  18-09-2019
  •  | 
  •  

سؤال

أجد نفسي يكتب رمز مثل هذا في رأس HTML وأماكن أخرى:

<% if @canonical_url %>
  <link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>

ثم اضبط المتغير في وحدة التحكم إذا كان من المناسب.

هل هناك أي طريقة لكتابة ما يعادلها على سطر واحد، أو ربما طريقة مختلفة لتنظيم التعليمات البرمجية؟

هل كانت مفيدة؟

المحلول 2

حسنا، لقد توصلت إلى هذا الحل. في القالب:

<%= show_if('<link rel="canonical" href="$1"/>', @canonical_url) %>

ثم طريقة المساعد:

#
# Return the template text if the variable has a value.
#
def show_if(template, variable)
  if variable
    template.gsub('$1', variable)
  else
    ''
  end
end

نصائح أخرى

آسف للإجابة المزدوجة، لذلك سوف تسمح لي فقط بنشر عنوان URL واحد.

بدلا من ذلك، قد يتم حل مشكلتك باستخدام content_for في وجهات نظركم حيث تريد أن يظهر هذا المحتوى في تخطيطك.

أحتاج إلى سياق أكثر قليلا لتحديد ما هو أنك تحاول القيام به. بالنظر إلى المعلومات التي تقدمها، أود أن أوصي بإلقاء نظرة على البرنامج المساعد Canonical-URL للقضبان.

def if_value(value, &block)
  if value
    concat(capture(value, &block))
  end
end

<% if_value(@canonical_url) do |value| %>
  <link rel="canonical" href="<%= value %>"/>
<% end %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top