0

我在繪製將代碼放入視圖或將其放入幫助程序之間畫線時遇到了一些困難。將邏輯放入視圖或幫助程序中 - Rails

例如,這是我放在視圖代碼:

<div id="top-columns"> 
    <!-- large-3 columns --> 
    <% if @show_interest_group %> 
    <% rows_for_groups(@interest_groups).each do |groups| %> 
    <div class="row"> 
     <% groups.each do |group| %> 
     <div class="<%= css_class_for_groups(groups)%> interestgroupBlock"> 
      <article> 
      <%= link_to '', jobs_path(:category => group.sap_id), :class => "plusSign"%> 
      <h3 class="headingMedium"> 
       <%= group.title %> 
      </h3> 
      <figure> 
       <%= image_tag group.image_url, :alt => group.alt %> 
      </figure> 
      <p class=""><%= group.body %></p> 
      <p class="more"><%= link_to t("home.jobs.view_link"), jobs_path(:category => group.sap_id)%></p> 
      </article> 
     </div> 
    <% end %> 
    </div> 





    <% if @questionnaires.present? %> 
    <%= render_numbered_header(ApplyField.surveys_title) %> 
      <div class="collapsable"> 
    <fieldset> 
    <div class="large-12 columns"> 
    <% @questionnaires.each_with_index do |questionnaire,i| %> 

     <h3> <strong><%= questionnaire["QUESTIONNAIRE_NAME"] %></strong></h3> 
     <p><%= questionnaire["QUESTIONNAIRE_DESCRIPTION"] %></p> 
     <% questionnaire["QUESTIONS"].collect{|q| q["QUESTION"]}.each do |question| %> 

     <%= render_question(question, {"data-template_id" =>questionnaire["QUESTIONNAIRE_TEMPLATE_ID"]}, params[:surveys]) %> 
     <% end %> 
    <% end %></div></div></fieldset> 
    <% end -%> 
    <% end %> 

所以對清潔程序,我有重構這個代碼,並把它放在一個助手還是我可以寫這樣的代碼。

回答

0

你被允許在視圖中使用這樣的代碼,但你不希望使用代碼repitively是保持乾燥

u能一定會把一段代碼在文件的幫手(名應該是在同一個目錄_make_table.html.erb或不同的(開始_))

,並可以把線在主窗體

<%= render :partial => "make_table", :locals => {:user => user}%>

+0

你的意思是由代碼repetitivel ÿ?你是指循環? – Vinozio

+0

如果任何其他視圖包含相同的代碼,則不需要重複自己,只需將其放入幫助程序中即可使用。 – akash