وجهات نظر القضبان: كيف تمرر متغيرًا إلى تخطيط جزئي؟

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

سؤال

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

# In app/views/sessions/new.html.erb
<% render :layout => 'home/shadow_box' do %>
  #... code for sign in form here
<% end %>

التصميم هو div الذي يحتوي على ظلال PNG على الجوانب الأربعة.

نظرًا لأنني أستخدم هذا التصميم في جميع أنحاء موقعي ، فأنا أريد تمرير متغير إلى التصميم الذي يحدد عرض Div المظلوم. حاولت استخدام المحتوى في كتلة الكود:

# In app/views/sessions/new.html.erb
<% render :layout => 'home/shadow_box' do %>
  <% content_for :box_width %>640<% end %>
  #... code for sign in form here
<% end %>

# In app/views/home/_shadow_box.html.erb
<div class="shadow-one" style="width:<%= yield :box_width %>;">
  <div class="corner-a"></div>
  <div class="corner-b"></div>
  <div class="shadow-two">
    <div class="shadow-three">
      <div class="shadow-four">
        <%= yield %>
      </div>
    </div>
  </div>
</div>

هذا لم ينجح وبدلاً من ذلك أدى إلى عرض مزدوج كتلة الكود بأكمله.

ما هي أفضل طريقة لمعالجة هذه المشكلة؟

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

المحلول

اكتشفه.

من واجهة برمجة التطبيقات: "يمكنك أيضًا العائد عدة مرات في تصميم واحد واستخدام وسيطات كتلة لتمييز الأقسام."

المحلول:

# In app/views/sessions/new.html.erb
<% render :layout => 'home/shadow_box' do | section | %>
  <%- case section when :box_width -%>
    #width goes here. I.e., 640px
  <%- when :content -%>
    #code block goes here
  <% end -%>
<% end %>

#In app/views/home/_shadow_box.html.erb
<div class="shadow-one" style="width:<%= yield :box_width %>;">
  <div class="corner-a"></div>
  <div class="corner-b"></div>
  <div class="shadow-two">
    <div class="shadow-three">
      <div class="shadow-four">
        <%= yield :content %>
      </div>
    </div>
  </div>
</div>

نصائح أخرى

تحتاج أولاً إلى معرفة الفرق بين layouts و partials. تكون الجزئية عمومًا من العرض ولكن يمكن استخدامها أيضًا من وحدة التحكم إذا كنت تستخدم AJAX. يتم استخدام التخطيطات دائمًا تقريبًا في وحدة التحكم.

قم أولاً بإنشاء ملف في مجلد مشترك مثل التطبيق/ وفي هذا المجلد ، ضع ملفًا اتصل به مهما تريد ، ولكنه سيحتوي على المواد التي تريد تضمينها في جميع أنحاء موقعك. ثم عندما تنقل متغيرًا إلى جزء جزئي ، يطلق عليه جزئيًا كمتغير محلي. أيضا مع الجزئية لا تحتاج أن تقول render :partial => أنت فقط وضعت render 'application/some_file'

لذلك من العرض الذي تريده هذا:

<%= render 'application/your_file', :div_size => '600' %>

ثم من الجزئي في المجلد مثل application/your_file.html.erb افعل هذا:

<div style="width:<%= div_width %>px;">
   content
</div>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top