إرب:يتكرر الإخراج إذا كان القالب يحتوي على تعريف الأسلوب

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

  •  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

وعملت بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top