두 개의 템플릿에 반복되는 패턴이 있습니다. 이 코드는 각 탭에 대한 탭 및 내용 집합을 렌더링하는 데 사용됩니다. /app/views/general/_product_groupings.html.erbRuby 블록과 params를 사용하여 템플릿을 말리십시오.
<table cellpadding="1" cellspacing="0" class="sub_container clear">
<tr>
<% first_visible_tab = true %>
<% @bundle.groupings.each do |group| %>
<td id="tab_heading_for_group_<%= group.id %>" class="tab_heading <%= 'selected' if first_visible_tab %>" onclick="show_tab('product_type_<%= group.id %>')"><%= one_liner(group.name) %></td>
<td></td>
<% first_visible_tab = false %>
<% end %>
<td class="last"></td>
</tr>
<tr>
<td colspan="99" class="tab_content">
<% first_visible_tab = true %>
<%# groupings is an array of products %>
<% @bundle.groupings.each do |group| %>
<div style="display: <%= (first_visible_tab) ? '' : 'none' %>" id="tab_body_for_group_<%= group.id %>" class="tab_body container_inner">
<% first_visible_tab = false %>
<% template = case group.grouping_type
when 'selection'
:product_selection_group
when 'group'
:product_optional_group
when 'product'
:product_optional_group
end %>
<%= render :partial => template.to_s, :locals => {:group => group} %>
</div>
<% end %>
</td>
<tr>
</table>
코드의
내용은 몇 가지 부분으로 구성되어 있습니다. 전달 된 일반 매개 변수는 @bundle
입니다. 헤더 섹션
<table cellpadding="1" cellspacing="0" class="sub_container clear">
<tr>
<% first_visible_tab = true %>
<% @bundle.groupings.each do |group| %>
<td id="tab_heading_for_group_<%= group.id %>" class="tab_heading <%= 'selected' if first_visible_tab %>" onclick="show_tab('product_type_<%= group.id %>')"><%= one_liner(group.name) %></td>
<td></td>
<% first_visible_tab = false %>
<% end %>
<td class="last"></td>
</tr>
이와 같이 각각의 위치 코드를 사용하는 부분이 다를있다 : @bundle.groupings
, 반복시 컬렉션이 헤더 부 (라인 1-10)가있다. show_tab()
onclick의 매개 변수입니다. 탭 id="tab_heading_for_group_<%= group.id %>"
의 ID입니다.
<% template = case group.grouping_type
when 'selection'
:product_selection_group
when 'group'
:product_optional_group
when 'product'
:product_optional_group
end %>
<%= render :partial => template.to_s, :locals => {:group => group} %>
단지 콘텐츠 상기
가있다 : 헤더 아래 내가 각 탭 콘텐츠 영역의 실제 콘텐츠 (라인 19-27)를 블록으로 수득 될 수있다라고 생각하는 영역이있다 머리 부분에서 같은 컬렉션@bundle.groupings.each do ...
반복.
나는 이것을 정말 많이 마시고 싶습니다. 도우미 메서드 내에서 생성 될 수있는 내용으로 블록을 정의합니다.
- id_template
- onclick_method #perhaps :
는 I이 방법은 다음 PARAMS을한다고 생각 탭의 내용 영역
질문 : 어떻게하면 도우미 메소드를 만들어서 bot h 블록과 params?
템플릿에서 헬퍼 또는 컨트롤러로 가장 조금 더 많은 HTML을 이동해야 할 때마다 디자인이 안쪽으로 보이기 시작합니다. 나는 더 나은 디자인을 사용할 수 있고, 더 적은 일로 꽤있을 것으로 생각한다. –
나는 블록과 params를 구현하는 것과 관련된 특정 질문에 대한 대답으로 이것을 받아 들였다. 그러나 Wayne Conrads가 내가 설명한 것과 비슷한 상황을 구현하면 대답을 생각해보십시오. –