إرب:يتكرر الإخراج إذا كان القالب يحتوي على تعريف الأسلوب
-
07-07-2019 - |
سؤال
كنت أتوقع أن أرى كلمة "اختبار" تظهر في الإخراج مرة واحدة وأن تظهر كلمة "مرحبًا" مرة واحدة.
لكني في حيرة من حقيقة أنني إذا فعلت هذا، يتم عرض كلمة "اختبار" مرتين.
<div>
<h3>test</h3>
</div>
<% def helo %>
<% "hello" %>
<% end %>
<%= helo %>
أفترض أن هناك تفسيرًا بسيطًا لذلك يتعلق ببعض غرابة erb؟
المحلول
لقد حاولت ذلك:
require 'erb'
template = %q{
<div>
<h3>test</h3>
</div>
<% def helo %>
<% "hello" %>
<% end %>
<%= helo %>
}
t = ERB.new(template)
puts t.result
#(erb):6:in `helo': undefined local variable or method `_erbout' for main:Object (NameError) from (erb):10
لذا يبدو أن ما ذكرته صحيح، ولكن بكل الطرق يمكنك خداعه بسهولة:
require 'erb'
template = %q{
<div>
<h3>test</h3>
</div>
<% def helo
"hello"
end %>
<%= helo %>
}
message = ERB.new(template)
puts message.result
وعملت بالنسبة لي.
لا تنتمي إلى StackOverflow